Python: waiting for external launched process finish

社会主义新天地 提交于 2019-12-28 11:53:48

问题


The question already in title - how can one make the python script wait until some process launched with os.system() call is completed ? For example a code like

    for i in range( 0, n ):
       os.system( 'someprog.exe %d' % i )

This launches the requested process n times simultaneously, which may make my pc to sweat a bit )

Thanks for any advice.


回答1:


os.system() does wait for its process to complete before returning.

If you are seeing it not wait, the process you are launching is likely detaching itself to run in the background in which case the subprocess.Popen + wait example Dor gave won't help.

Side note: If all you want is subprocess.Popen + wait use subprocess.call:

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

That is really no different than os.system() other than explicitly passing the command and arguments in instead of handing it over as a single string.




回答2:


Use subprocess instead:

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

Read more here: http://docs.python.org/library/subprocess.html



来源:https://stackoverflow.com/questions/8953119/python-waiting-for-external-launched-process-finish

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!