Python os.kill不在派生进程上工作
我已经编写了自己的基于Python的作业调度器,它使用多处理模块来生成新作业。我正在尝试使用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):
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()
来终止流程,解决了这个问题,如下所述: