Isso pode ter sido perguntado em um contexto semelhante, mas não consegui encontrar uma resposta após cerca de 20 minutos de pesquisa, então vou perguntar.
Eu escrevi um script Python (digamos: scriptA.py) e um script (digamos scriptB.py)
No scriptB, quero chamar o scriptA várias vezes com argumentos diferentes, cada vez que leva cerca de uma hora para ser executado (é um script enorme, faz muitas coisas ... não se preocupe com isso) e quero ser capaz de executar o scriptA com todos os diferentes argumentos simultaneamente, mas preciso esperar até que TODOS eles sejam concluídos antes de continuar; meu código:
import subprocess
#setup
do_setup()
#run scriptA
subprocess.call(scriptA + argumentsA)
subprocess.call(scriptA + argumentsB)
subprocess.call(scriptA + argumentsC)
#finish
do_finish()
Eu quero executar tudo subprocess.call()
ao mesmo tempo e, em seguida, esperar até que tudo esteja pronto, como devo fazer isso?
Tentei usar threading como o exemplo aqui :
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()
Mas eu não acho que isso esteja certo.
Como posso saber se todos eles terminaram de correr antes de ir para o meu do_finish()
?