似たような文脈で聞かれているかもしれませんが、20分ほど検索しても答えが見つからなかったので質問させていただきます。
Python スクリプト (scriptA.py としましょう) とスクリプト (scriptB.py としましょう) を作成しました。
scriptB では、さまざまな引数を指定して scriptA を複数回呼び出したいと考えています。実行には毎回約 1 時間かかります (巨大なスクリプトであり、多くのことを行います。心配する必要はありません)。すべての異なる引数を同時に使用して 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()
ますか?