Це може бути запитано в аналогічному контексті, але мені не вдалося знайти відповідь приблизно через 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()
?