สิ่งนี้อาจถูกถามในบริบทที่คล้ายกัน แต่ฉันไม่สามารถหาคำตอบได้หลังจากค้นหาประมาณ 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()
?