2012-01-21 33 views
9

La pregunta ya en el título: ¿cómo se puede hacer que el script python espere hasta que se complete algún proceso iniciado con la llamada a os.system()? Por ejemplo, un código comoPython: esperando finalizar el proceso de lanzamiento externo

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

Esto inicia el proceso de pedido n veces de forma simultánea, lo que puede hacer que mi pc a sudar un poco)

Gracias por cualquier consejo.

Respuesta

10

os.system() hace espera de su proceso se complete antes de regresar.

Si no la espera, el proceso que está iniciando probablemente se desconecte para ejecutarse en segundo plano, en cuyo caso el subproceso.Pobre + esperar ejemplo que Dor dio no ayudará.

Nota al margen: Si lo que quieres es subprocess.Popen + espere uso subprocess.call:

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

Eso es realmente diferente de os.system() que no sea pasar de forma explícita el comando y los argumentos en su lugar de entregárselo como una sola cuerda.

12

Uso subprocess lugar:

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

Leer más aquí: http://docs.python.org/library/subprocess.html

+0

+1 no por la respuesta, pero para la velocidad – joaquin

+0

@joaquin gracias –

Cuestiones relacionadas