La question déjà dans le titre - comment faire attendre le script python jusqu'à ce qu'un processus lancé avec l'appel os.system () soit terminé? Par exemple, un code comme
for i in range( 0, n ):
os.system( 'someprog.exe %d' % i )
Cela lance le processus demandé n fois simultanément, ce qui peut faire transpirer un peu mon ordinateur)
Merci pour tout conseil.
os.system () does attend que son processus se termine avant de revenir.
Si vous ne voyez pas attendre, le processus que vous lancez se détache probablement pour s'exécuter en arrière-plan, auquel cas l'exemple de sous-processus.Popen + wait que Dor a donné n'aidera pas.
Note latérale: Si tout ce que vous voulez, c'est sous-processus. Ouvrir + attendre utiliser subprocess.call:
import subprocess
subprocess.call(('someprog.exe', str(i)))
Ce n'est vraiment pas différent de os.system () autre que de passer explicitement la commande et les arguments au lieu de les remettre comme une seule chaîne.
Utilisez à la place subprocess
:
import subprocess
for i in xrange(n):
p = subprocess.Popen(('someprog.exe', str(i))
p.wait()
En savoir plus ici: http://docs.python.org/library/subprocess.html