Mogłem o to zapytać w podobnym kontekście, ale nie mogłem znaleźć odpowiedzi po około 20 minutach poszukiwań, więc zapytam.
Napisałem skrypt w Pythonie (powiedzmy: scriptA.py) i skrypt (powiedzmy scriptB.py)
W skrypcie B chcę wywołać skryptA wiele razy z różnymi argumentami, za każdym razem uruchomienie trwa około godziny (jest to ogromny skrypt, robi wiele rzeczy ... nie martw się o to) i chcę mieć możliwość uruchomienia scriptA ze wszystkimi różnymi argumentami jednocześnie, ale przed kontynuowaniem muszę poczekać, aż WSZYSTKIE zostaną wykonane; mój kod:
import subprocess
#setup
do_setup()
#run scriptA
subprocess.call(scriptA + argumentsA)
subprocess.call(scriptA + argumentsB)
subprocess.call(scriptA + argumentsC)
#finish
do_finish()
Chcę uruchomić wszystko subprocess.call()
w tym samym czasie, a następnie poczekać, aż wszystkie skończą , jak mam to zrobić?
Próbowałem użyć wątków, jak na przykładzie tutaj :
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()
Ale nie sądzę, żeby to było słuszne.
Skąd mam wiedzieć, że wszyscy skończyli biegać przed pójściem do mojego do_finish()
?