Potrebbe essere stato chiesto in un contesto simile ma non sono riuscito a trovare una risposta dopo circa 20 minuti di ricerca, quindi chiederò.
Ho scritto uno script Python (diciamo: scriptA.py) e uno script (diciamo scriptB.py)
In scriptB voglio chiamare scriptA più volte con argomenti diversi, ogni volta impiega circa un'ora per essere eseguito, (è uno script enorme, fa molte cose .. non preoccuparti) e voglio essere in grado di eseguire il scriptA con tutti i diversi argomenti contemporaneamente, ma devo aspettare che TUTTI siano finiti prima di continuare; il mio codice:
import subprocess
#setup
do_setup()
#run scriptA
subprocess.call(scriptA + argumentsA)
subprocess.call(scriptA + argumentsB)
subprocess.call(scriptA + argumentsC)
#finish
do_finish()
Voglio correre tutto subprocess.call()
allo stesso tempo, e poi aspettare che abbiano finito, come dovrei farlo?
Ho provato a utilizzare il threading come nell'esempio qui :
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()
Ma non credo che sia giusto.
Come faccio a sapere che hanno finito tutti di correre prima di andare al mio do_finish()
?