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

Gri*_*yan 20 python system-calls

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

    for i in range( 0, n ):
       os.system( 'someprog.exe %d' % i )
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的建议.

Dor*_*mer 19

subprocess改为使用:

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

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


gps*_*gps 17

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

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

旁注:如果你想要的只是subprocess.Popen + wait使用subprocess.call:

import subprocess
subprocess.call(('someprog.exe', str(i)))
Run Code Online (Sandbox Code Playgroud)

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

  • 如果进程在后台运行怎么办?有没有办法让python等到下一个循环? (2认同)