【发布时间】:2013-07-30 00:32:58
【问题描述】:
如何从 Python 脚本启动一个进程(例如,另一个 Python 脚本),以便“子”进程与“父”进程完全分离,这样父进程就可以 a) 继续愉快地进行而不用等待child to finish and b) 可以在不终止子进程的情况下终止吗?
家长:
import os
print "Parent started"
os.system("./child.py")
print "Parent finished"
孩子:
import time
print "Child started"
time.sleep(10)
print "Child finished"
运行parent.py 打印:
Parent started
Child started
Child finished
Parent finished
我想要它打印的内容:
Parent started
Child started
Parent finished
(seconds later)
Child finished
【问题讨论】:
-
查看
subprocess模块,特别是subprocess.Popen(...).pid -
@sberry:很好,看起来就像使用
subprocess.Popen("./child.py")完全符合我的需要,尽管从文档中并不清楚。如果您将评论添加为答案,我将很乐意接受,谢谢。 -
根据平台的不同,您可能可以在 shell 命令的末尾添加一个
&,它也可以工作。 -
@kevinsa5:是的,效果更好——我刚刚发现使用 Popen(),如果父进程被杀死,子进程似乎也被杀死了。
-
请注意,添加
&works on Linux,但does not work on Windows:您必须使用start。
标签: python linux subprocess