如何从Python脚本在后台启动流程并避免僵尸



在下面的Python脚本代码中,我正在生成另一个Python脚本。

我想在后台运行"test_bin",不想调用wait或通信来获取退出状态。如果我没有使用等待/通信,"test_bin"在完成后将失效(僵尸(。

有没有什么方法可以避免我们在没有等待/沟通的情况下倒闭?

import subprocess
test_bin = "/usr/local/bin/test_code.py" # Took 5-10 min to complete
proc_handle = subprocess.Popen( (test_bin, shell=True)
:
:
proc_handle.wait() # don't want to do this.

在类Unix系统中,忽略SIGCHLD就足够了,子进程永远不会变成僵尸。所以你可以做:

import subprocess
import signal
test_bin = "/usr/local/bin/test_code.py" # Took 5-10 min to complete
signal.signal(signal.SIGCHLD, signal.SIG_IGN)
proc_handle = subprocess.Popen( (test_bin, shell=True)
...

最新更新