Python:等待外部启动的流程完成

时间:2012-01-21 12:57:44

标签: python system-calls

标题中已经存在的问题 - 如何使python脚本等到使用os.system()调用启动某个进程完成后?例如像

这样的代码
    for i in range( 0, n ):
       os.system( 'someprog.exe %d' % i )

这会同时启动请求的过程n次,这可能会让我的电脑出汗一点)

感谢您的任何建议。

2 个答案:

答案 0 :(得分:18)

改为使用subprocess

import subprocess
for i in xrange(n):
  p = subprocess.Popen(('someprog.exe', str(i))
  p.wait()

在此处阅读更多内容:http://docs.python.org/library/subprocess.html

答案 1 :(得分:17)

os.system()确实在返回之前等待其进程完成。

如果你看到它没有等待,那么你正在启动的进程可能会自行分离以在后台运行,在这种情况下,subprocess.Popen + wait示例Dor给出了帮助。

附注:如果你想要的只是subprocess.Popen + wait use subprocess.call:

import subprocess
subprocess.call(('someprog.exe', str(i)))

除了显式传递命令和参数而不是将其作为单个字符串传递之外,这与os.system()没有什么不同。