当我在linux中使用terminate和python时,我找到了一种方法来关闭os.system('kill-9{0}.format(pid))的进程,但是失败了。
我的代码是运行两个进程。当第一个进程完成时,我也希望关闭第二个进程(如果不关闭第二个进程,它将一直自动运行)。

sys.setrecursionlimit(1000000)
progress1 = Process(target=main)
progress2 = Process(target=run_proxypool)
progress1.daemon = True
progress2.start()
pid = progress2.pid
time.sleep(10)
progress1.start()
progress1.join()
os.system('kill -9 {0}'.format(pid))

最佳答案

确保你在Linux上运行。也可以考虑使用os.kill(pid, signal.SIGKILL)
不完全是你所要求的,但是考虑切换到psutil以获得跨平台的好处以及方便,例如wait_procs将优雅地发送SIGTERM,等待,然后发送SIGKILL。
signal.SIGKILL应该在Linux上可用(而不是在Windows上)。
多处理模块recently gainedakill()方法,在Windows上返回到terminate方法。

10-06 13:54
查看更多