Es posible que esto se haya preguntado en un contexto similar, pero no pude encontrar una respuesta después de unos 20 minutos de búsqueda, así que preguntaré.
He escrito un script de Python (digamos: scriptA.py) y un script (digamos scriptB.py)
En scriptB quiero llamar a scriptA varias veces con diferentes argumentos, cada vez tarda aproximadamente una hora en ejecutarse (es un script enorme, hace muchas cosas ... no se preocupe) y quiero poder ejecutar el scriptA con todos los diferentes argumentos simultáneamente, pero necesito esperar hasta que TODOS estén listos antes de continuar; mi código:
import subprocess
#setup
do_setup()
#run scriptA
subprocess.call(scriptA + argumentsA)
subprocess.call(scriptA + argumentsB)
subprocess.call(scriptA + argumentsC)
#finish
do_finish()
Quiero ejecutar todos subprocess.call()
al mismo tiempo, y luego esperar hasta que terminen, ¿cómo debo hacer esto?
Traté de usar subprocesos como el ejemplo aquí :
from threading import Thread
import subprocess
def call_script(args)
subprocess.call(args)
#run scriptA
t1 = Thread(target=call_script, args=(scriptA + argumentsA))
t2 = Thread(target=call_script, args=(scriptA + argumentsB))
t3 = Thread(target=call_script, args=(scriptA + argumentsC))
t1.start()
t2.start()
t3.start()
Pero no creo que esto sea correcto.
¿Cómo sé que han terminado de correr antes de ir a mi do_finish()
?