Python subprocess.popen()无需等待

时间:2015-01-30 09:09:22

标签: python subprocess popen

我在Windows上使用Python 3.4.2。在script1.py中我这样做:

myProc = subprocess.Popen([sys.executable, "script2.py", "argument"])
myProc.communicate()

它可以工作并调用script2.py。 问题是在script2.py中有一个无限循环(必须有)并且script1.py正在等待script2.py完成。如何告诉script1.py只调用script2.py并且不要等待该过程完成?

2 个答案:

答案 0 :(得分:4)

如果您不想等,请不要致电myProc.communicate()subprocess.Popen将启动此过程。

答案 1 :(得分:0)

在另一个窗口中调用脚本。

myProc = subprocess.Popen(["start", sys.executable, "script2.py", "argument"])
myProc.communicate()

start是一个单独运行程序的Windows shell函数,允许当前程序继续其进程。我没有对此进行测试,因为我无法访问Windows操作系统,但Linux等效项(nohup)可以根据需要运行。

如果您需要对script2.py的操作进行精确控制,请参阅multiprocessing模块here