我有一个创建两个或多个子进程的主进程,我希望主进程要等到所有子进程完成其操作并退出?等待进程,直到所有子进程完成?
# main_script.py
p1 = subprocess.Popen(['python script1.py'])
p2 = subprocess.Popen(['python script2.py'])
...
#wait main process until both p1, p2 finish
...
我有一个创建两个或多个子进程的主进程,我希望主进程要等到所有子进程完成其操作并退出?等待进程,直到所有子进程完成?
# main_script.py
p1 = subprocess.Popen(['python script1.py'])
p2 = subprocess.Popen(['python script2.py'])
...
#wait main process until both p1, p2 finish
...
一个Popen
对象都有这正是定义的.wait()
方法:等待一个给定的子进程的完成(并且,除了,以重新调整退出状态)。
如果使用这种方法,你会阻止该进程僵尸躺在身边太久。 (或者,你可以使用subprocess.call()
或subprocess.check_call()
进行调用和等待,如果你不需要IO进程,这可能就足够了,但可能这不是一个选项,因为如果两个子进程似乎被认为并行运行,他们不会与(check_
)call()
)
如果你有几个子过程等待,你可以做
exit_codes = [p.wait() for p in p1, p2]
其中当所有的子进程都返回完了。然后你可以得到一个你可以评估的返回代码列表。
subprocess.call
自动等待,你也可以使用:
p1.wait()
使用wait方法:'p1.wait(); p2.wait()' – 2013-02-27 08:52:14
检查这个问题了:http://stackoverflow.com/questions/6341358/subprocess-wait-not-waiting-for-popen-process-to-finish-when-using-threads – Calum 2013-02-27 08:54:37
HTTP: //stackoverflow.com/questions/100624/python-on-windows-how-to-wait-for-multiple-child-processes – Gjordis 2013-02-27 09:00:55