Python os.kill不在派生进程上工作

Python os.kill不在派生进程上工作,python,multiprocessing,kill-process,Python,Multiprocessing,Kill Process,我已经编写了自己的基于Python的作业调度器,它使用多处理模块来生成新作业。我正在尝试使用os.kill实现一个功能来终止正在运行的进程,但它不起作用。我的(简化)代码如下所示: 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):

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

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,它是从另一个python会话运行中输出的(例如3064):

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

os.kill
如果我在父进程/衍生进程的pid上运行它,它会工作,但是如果我在子进程/衍生进程的pid上执行它,它就不工作。除了SIGTERM,我还尝试了许多其他信号,如SIGKILL、SIGQUIT等。它们都不起作用。任何帮助都将不胜感激

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