Python: ждет завершения внешнего запуска процесса

Вопрос уже в заголовке – как заставить скрипт python ждать завершения какого-либо процесса с вызовом os.system ()? Например, такой код, как

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

Это запускает запрошенный процесс n раз одновременно, что может заставить мой компьютер немного потеть)

Спасибо за любой совет.

os.system () ожидает завершения процесса перед возвратом.

Если вы видите, что это не дожидается, процесс, который вы запускаете, скорее всего, сам себя отлаживает для запуска в фоновом режиме, и в этом случае пример subprocess.Popen + wait Dor дал не поможет.

Боковое примечание: если все, что вы хотите, является подпроцессом. Popen + wait use 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() 

Подробнее здесь: http://docs.python.org/library/subprocess.html