versiones guia espaƱol descargar actualizar python subprocess ipc

python - guia - qgis manual



esperar proceso hasta que todos los subprocesos terminen? (2)

Tengo un proceso principal que crea dos o más subprocesos. ¿Quiero que el proceso principal espere hasta que todos los subprocesos terminen sus operaciones y salgan?

# main_script.py p1 = subprocess.Popen([''python script1.py'']) p2 = subprocess.Popen([''python script2.py'']) ... #wait main process until both p1, p2 finish ...


Un objeto Popen tiene un método .wait() definido exactamente para esto: para esperar la finalización de un subproceso determinado (y, además, para volver a sintonizar su estado de salida).

Si usas este método, evitarás que el proceso de los zombies permanezca durante demasiado tiempo.

(Alternativamente, puede usar subprocess.call() o subprocess.check_call() para llamar y esperar. Si no necesita IO con el proceso, eso podría ser suficiente. Pero probablemente esto no sea una opción, porque puede parece que se supone que dos subprocesos se ejecutan en paralelo, que no lo harán con ( check_ ) call() .)

Si tiene varios subprocesos que esperar, puede hacer

exit_codes = [p.wait() for p in p1, p2]

que vuelve tan pronto como todos los subprocesos hayan terminado. A continuación, tiene una lista de códigos de retorno que tal vez pueda evaluar.


subprocess.call

Espera automáticamente, también puedes usar:

p1.wait()