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.
This wait()method in Python is a method of os module which generally makes the parent process to synchronize with its child process which means the parent will wait for the child process to complete its execution (i.e wait until the exit of the child process) and later continue with its process execution.
subprocess. run() is synchronous which means that the system will wait till it finishes before moving on to the next command.
Answer #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.
The os. system() function executes a command, prints any output of the command to the console, and returns the exit code of the command.
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With