Dies wurde möglicherweise in einem ähnlichen Kontext gestellt, aber ich konnte nach etwa 20 Minuten Suche keine Antwort finden, daher werde ich fragen.
Ich habe ein Python-Skript (sagen wir: scriptA.py) und ein Skript (sagen wir scriptB.py) geschrieben.
In scriptB möchte ich scriptA mehrmals mit unterschiedlichen Argumenten aufrufen. Die Ausführung dauert jedes Mal ungefähr eine Stunde (es ist ein riesiges Skript, erledigt viele Dinge. Mach dir keine Sorgen) und ich möchte das ausführen können scriptA mit all den verschiedenen Argumenten gleichzeitig, aber ich muss warten, bis ALLE fertig sind, bevor ich fortfahre; Mein Code:
import subprocess
#setup
do_setup()
#run scriptA
subprocess.call(scriptA + argumentsA)
subprocess.call(scriptA + argumentsB)
subprocess.call(scriptA + argumentsC)
#finish
do_finish()
Ich möchte alle subprocess.call()gleichzeitig laufen und dann warten, bis alle fertig sind. Wie soll ich das tun?
Ich habe versucht , wie das Beispiel zu verwenden Threading hier :
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()
Aber ich denke nicht, dass das richtig ist.
Woher weiß ich, dass sie alle fertig sind, bevor sie zu mir gehen do_finish()?