Ini mungkin telah ditanyakan dalam konteks yang sama tetapi saya tidak dapat menemukan jawaban setelah sekitar 20 menit pencarian, jadi saya akan bertanya.
Saya telah menulis skrip Python (katakanlah: scriptA.py) dan skrip (katakanlah scriptB.py)
Di scriptB saya ingin memanggil scriptA beberapa kali dengan argumen yang berbeda, setiap kali membutuhkan waktu sekitar satu jam untuk dijalankan, (ini adalah script yang sangat besar, melakukan banyak hal .. jangan khawatir tentang itu) dan saya ingin dapat menjalankan scriptA dengan semua argumen yang berbeda secara bersamaan, tapi saya harus menunggu sampai SEMUAnya selesai sebelum melanjutkan; kode saya:
import subprocess
#setup
do_setup()
#run scriptA
subprocess.call(scriptA + argumentsA)
subprocess.call(scriptA + argumentsB)
subprocess.call(scriptA + argumentsC)
#finish
do_finish()
Saya ingin menjalankan semua subprocess.call()
pada waktu yang sama, dan kemudian menunggu sampai semuanya selesai, bagaimana saya harus melakukan ini?
Saya mencoba menggunakan threading seperti contoh di sini :
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()
Tetapi menurut saya ini tidak benar.
Bagaimana saya tahu mereka semua telah selesai berlari sebelum pergi ke saya do_finish()
?