我已经编写了自己的基于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等,它们都不起作用。任何帮助都将不胜感激。
我通过使用
subprocess
模块创建一个进程组来创建该进程,并使用os.killpg()
来终止该进程来解决此问题,如下所述:https://stackoverflow.com/a/4791612/2636544相关问题 更多 >
编程相关推荐