os.kill不处理生成的进程

2024-04-28 07:43:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了自己的基于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()
        ...

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

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

os.kill如果在父进程/生成进程的pid上运行,则有效,但如果在子进程/生成进程的pid上执行,则无效。除了SIGTERM,我还尝试了其他一些信号,如SIGKILL、SIGQUIT等,它们都不起作用。任何帮助都将不胜感激。


Tags: runimportselfcmdsignal进程osdir