Возможно, это было задано в аналогичном контексте, но я не смог найти ответ после 20 минут поиска, поэтому я попрошу.
Я написал Python script (скажем: scriptA.py) и script (скажем, scriptB.py)
В scriptB Я хочу называть scriptA несколько раз с разными аргументами, каждый раз требуется около часа для запуска, (его огромный script, много вещей.. не беспокойтесь об этом), и я хочу иметь возможность запускать scriptA со всеми разными аргументами одновременно, но мне нужно дождаться, пока ВСЕ из них будут выполнены до продолжения; мой код:
import subprocess
#setup
do_setup()
#run scriptA
subprocess.call(scriptA + argumentsA)
subprocess.call(scriptA + argumentsB)
subprocess.call(scriptA + argumentsC)
#finish
do_finish()
Я хочу запустить все subprocess.call()
в одно и то же время, а потом дождаться, когда все будет сделано, как мне это сделать?
Я попытался использовать threading, как в примере здесь:
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()
Но я не думаю, что это правильно.
Как я узнаю, что они все закончили, прежде чем перейти к моему do_finish()
?