Возможно, об этом спрашивали в аналогичном контексте, но я не смог найти ответ примерно через 20 минут поиска, поэтому спрошу.
Я написал сценарий Python (скажем: scriptA.py) и сценарий (скажем, scriptB.py)
В scriptB я хочу вызвать scriptA несколько раз с разными аргументами, каждый раз для запуска требуется около часа (это огромный сценарий, делает много всего ... не беспокойтесь об этом), и я хочу иметь возможность запускать 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()одновременно, а затем подождать, пока все они будут выполнены, как мне это сделать?
Я пытался использовать потоки, как в примере здесь :
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()?