Nik*_*war 69 python subprocess ipc
我有一个创建两个或更多子流程的主流程,我希望主流程等到所有子流程完成其操作并退出?
# main_script.py
p1 = subprocess.Popen(['python script1.py'])
p2 = subprocess.Popen(['python script2.py'])
...
#wait main process until both p1, p2 finish
...
Run Code Online (Sandbox Code Playgroud)
glg*_*lgl 96
一个Popen对象有.wait()这个确切定义的方法:等待一个给定的子进程的完成(和,此外,对于重新调整它的退出状态).
如果你使用这种方法,你将防止进程僵尸躺在那里太久.
(或者,您可以使用subprocess.call()或subprocess.check_call()进行调用和等待.如果您不需要IO进程,那可能就足够了.但可能这不是一个选项,因为您的两个子进程似乎应该并行运行,他们不会与(check_)call().)
如果你有几个子进程要等待,你可以这样做
exit_codes = [p.wait() for p in p1, p2]
Run Code Online (Sandbox Code Playgroud)
一旦所有子进程完成,它就会返回.然后,您可以获得一个可以评估的返回代码列表.
Gjo*_*dis 20
subprocess.call
Run Code Online (Sandbox Code Playgroud)
自动等待,您还可以使用:
p1.wait()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138148 次 |
| 最近记录: |