Cette question a peut-être été posée dans un contexte similaire, mais je n'ai pas trouvé de réponse après environ 20 minutes de recherche, alors je vais la poser.
J'ai écrit un script Python (disons : scriptA.py) et un script (disons scriptB.py).
Dans le scriptB, je veux appeler le scriptA plusieurs fois avec différents arguments, chaque fois prend environ une heure à exécuter, (c'est un énorme script, fait beaucoup de choses ne vous inquiétez pas pour ça) et je veux être capable d'exécuter le scriptA avec tous les différents arguments simultanément, mais je dois attendre jusqu'à ce que TOUS soient faits avant de continuer ; mon code :
import subprocess
#setup
do_setup()
#run scriptA
subprocess.call(scriptA + argumentsA)
subprocess.call(scriptA + argumentsB)
subprocess.call(scriptA + argumentsC)
#finish
do_finish()
Je veux faire fonctionner tous les subprocess.call()
en même temps, et ensuite attendre qu'ils soient tous terminés, comment dois-je faire ?
J'ai essayé d'utiliser l'enfilage comme dans l'exemple 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()
Mais je ne pense pas que cela soit juste.
Comment puis-je savoir qu'ils ont tous fini de courir avant d'aller dans mon do_finish()
?