Bu, benzer bir bağlamda sorulmuş olabilir, ancak yaklaşık 20 dakika aradıktan sonra bir cevap bulamadım, bu yüzden soracağım.
Bir Python betiği (diyelim ki: scriptA.py) ve bir betik (scriptB.py diyelim) yazdım
ScriptB'de scriptA'yı farklı argümanlarla birden çok kez çağırmak istiyorum, her seferinde çalıştırılması yaklaşık bir saat sürüyor (çok büyük bir komut dosyası, pek çok şey yapıyor ... bunun için endişelenmeyin) ve çalıştırabilmek istiyorum. scriptA ile aynı anda tüm farklı argümanlar var, ancak devam etmeden önce TÜMÜNÜN bitmesini beklemem gerekiyor; benim kodum:
import subprocess
#setup
do_setup()
#run scriptA
subprocess.call(scriptA + argumentsA)
subprocess.call(scriptA + argumentsB)
subprocess.call(scriptA + argumentsC)
#finish
do_finish()
Hepsini subprocess.call()
aynı anda çalıştırmak ve sonra hepsi bitene kadar beklemek istiyorum, bunu nasıl yapmalıyım?
Buradaki örnek gibi iş parçacığı kullanmayı denedim :
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()
Ama bunun doğru olduğunu düşünmüyorum.
Bana gitmeden önce tümünün koşmayı bitirdiğini nasıl bilebilirim do_finish()
?