我正在开发一个python程序,它必须运行(可能大量)其他python程序(用于一些负载测试)。其中一些是短暂的,另一些则持续时间更长。我希望短生命的进程在完成后终止并消失,但是每个进程似乎都会留下一个死的“(Python)”进程,直到原始程序完成。在
平台是OSX,Python2.7.6。在
下面是一些简单的演示程序,可以显示问题:#!/usr/bin/env python
# Child Process: Started by parent...
import time
print "Hello from child!"
time.sleep(10)
print "Child finished."
exit(0)
以及父程序:
^{pr2}$
我从终端运行“父”程序/父级.py". 以下是输出(如预期):Starting Child...
Parent Process... hanging around.
Hello from child!
Child finished.
最初,“ps”命令显示:
“ps”命令显示:782 ttys002 0:00.03 python ./parent.py
783 ttys002 0:00.02 python ./child.py
这很有道理。。。父进程已启动子进程。在
10秒后,孩子如期结束,然后“ps”显示:782 ttys002 0:00.03 python ./parent.py
783 ttys002 0:00.00 (Python)
“783”会一直挂起,直到父进程结束,即使python程序已经完成了“exit(0)”。在
一旦这个过程完成了,有没有什么方法可以真正终止/摆脱这个过程?我在想,如果我在很长一段时间内启动数百个甚至数千个短暂的进程,这可能是个问题。在
我尝试过subprocess()、Popen(如图所示),还使用fork()和execl(),但它们总是以相同的行为结束。在