2012-01-21 35 views
9

La domanda già nel titolo: come si può far attendere lo script python fino al completamento di qualche processo avviato con la chiamata os.system()? Per esempio un codice comePython: in attesa del completamento del processo avviato esterno

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

Questo avvia il processo richiesto n volte contemporaneamente, il che può rendere il mio pc a sudare un po ')

Grazie per qualsiasi consiglio.

risposta

10

os.system() fa attesa per il suo processo di completamento prima di tornare.

Se non lo si vede, il processo che si sta avviando è probabile che si stacchi da solo per eseguire in background, nel qual caso il sottoprocesso.Popen + aspetta l'esempio di Dor non sarà di aiuto.

Nota a margine: se invece si è subprocess.Popen + aspettare uso subprocess.call:

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

Che non è molto diverso rispetto os.system() diverso da quello che passa in modo esplicito il comando e gli argomenti a posto di consegnarlo come una singola stringa.

12

Uso subprocess invece:

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

Per saperne di più qui: http://docs.python.org/library/subprocess.html

+0

+1 non per la risposta, ma per la velocità – joaquin

+0

@joaquin grazie –

Problemi correlati