これは同様の文脈で尋ねられた可能性がありますが、約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()
ですか?