os.kill 不处理生成的进程

os.kill not working on spawned process

我已经编写了自己的基于 Python 的作业调度程序,它使用多处理模块来生成新作业。我正在尝试实现一项功能以使用 os.kill 终止 运行ning 进程,但它不起作用。我的(简化的)代码如下所示:

from multiprocessing import Process
import os
...
p = Process(target=self.start_job, args=(run_dir,cmd,))
p.start()
...
def start_job(self,run_dir,cmd):
        os.chdir(run_dir)
        os.system(cmd)
        print os.getpid()
        ...

我想获取这个输出的 pid(例如 3064)和另一个 python 会话 运行:

import os, signal    
os.kill(3064, signal.SIGTERM)

os.kill 如果我 运行 它在 parent/spawning 进程的 pid 上工作,但如果我在 child/spawned 的 pid 上执行它就不起作用过程。除了 SIGTERM 之外,我还尝试了一些其他信号,例如 SIGKILL、SIGQUIT 等。None 它们都起作用了。任何帮助将不胜感激。

我通过使用 subprocess 模块创建进程并使用 os.killpg() 终止进程来解决这个问题,如下所述: