Cela a peut-être été demandé dans un contexte similaire, mais je n'ai pas pu trouver de réponse après environ 20 minutes de recherche, je vais donc demander.
J'ai écrit un script Python (disons: scriptA.py) et un script (disons scriptB.py)
Dans scriptB, je veux appeler scriptA plusieurs fois avec des arguments différents, chaque fois prend environ une heure à exécuter, (c'est un énorme script, fait beaucoup de choses ... ne vous inquiétez pas) et je veux pouvoir exécuter le scriptA avec tous les différents arguments simultanément, mais je dois attendre que TOUS soient terminés 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 tout exécuter subprocess.call()
en même temps, puis attendre qu'ils soient tous terminés, comment dois-je faire cela?
J'ai essayé d'utiliser le filetage comme l'exemple ici :
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 ce soit juste.
Comment puis-je savoir qu'ils ont tous fini de courir avant d'accéder à mon do_finish()
?