os.kill没有处理衍生过程

Wes*_*Wes 6 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):
        os.chdir(run_dir)
        os.system(cmd)
        print os.getpid()
        ...
Run Code Online (Sandbox Code Playgroud)

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

import os, signal    
os.kill(3064, signal.SIGTERM)
Run Code Online (Sandbox Code Playgroud)

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

Wes*_*Wes 6

我通过使用subprocess模块创建进程组来创建进程并使用os.killpg()杀死进程来解决这个问题,如下所述:https : //stackoverflow.com/a/4791612/2636544