如何让Python脚本等待使用os.system()
调用启动的某个进程完成?例如,像这样的代码
for i in range(0, n):
os.system('someprog.exe %d' % i)
这将同时启动请求的进程n
次。
如何让Python脚本等待使用os.system()
调用启动的某个进程完成?例如,像这样的代码
for i in range(0, n):
os.system('someprog.exe %d' % i)
这将同时启动请求的进程n
次。
os.system()会等待其进程完成后才返回。
如果你发现它没有等待,那么你启动的进程很可能会自行分离以在后台运行,在这种情况下,Dor给出的subprocess.Popen + wait示例将无法帮助。
另外:如果你只想要subprocess.Popen + wait,使用subprocess.call即可:
import subprocess
subprocess.call(('someprog.exe', str(i)))
这与os.system()几乎没有区别,只不过是明确地传递命令和参数,而不是将其作为单个字符串交给它。
使用subprocess
代替:
import subprocess
for i in xrange(n):
p = subprocess.Popen(('someprog.exe', str(i))
p.wait()
p.close()
关闭。改用with subprocess.Popen(('command', str(i)) as p: p.wait()
代替。