Estoy ejecutando algunos subprocesos de python en paralelo. Quiero esperar hasta que cada subproceso haya terminado. Estoy haciendo una solución no elegante:Espere al final de los subprocesos con varios trabajos paralelos
runcodes = ["script1.C", "script2.C"]
ps = []
for script in runcodes:
args = ["root", "-l", "-q", script]
p = subprocess.Popen(args)
ps.append(p)
while True:
ps_status = [p.poll() for p in ps]
if all([x is not None for x in ps_status]):
break
¿Hay una clase que pueda manejar múltiples subprocesos? El problema es que el método wait
bloquea mi programa.
actualización: Quiero mostrar el progreso durante el cálculo: algo así como "4/7 subproceso terminó ..."
Si tienes curiosidad root
compilar el C++ guión y ejecutarlo.
sí, el problema es que no puedo escribir '#process finished' durante las ejecuciones porque supongo que el primer subproceso es muy lento, p es igual al primer' ps' y python está esperando y congelado hasta la primera acabados; Python no puede escribir que todo el subproceso excepto el primero está terminado. –