यह एक समान संदर्भ में पूछा गया हो सकता है, लेकिन मैं लगभग 20 मिनट की खोज के बाद एक उत्तर खोजने में असमर्थ था, इसलिए मैं पूछूंगा।
मैंने एक पाइथन स्क्रिप्ट लिखी है (बताएं: scriptA.py) और एक स्क्रिप्ट (स्क्रिप्ट स्क्रिप्ट को कहने देता है)
ScriptB में मैं अलग-अलग तर्कों के साथ 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()?