एक Popen
वस्तु एक .wait()
विधि वास्तव में इस के लिए परिभाषित किया गया है: एक दिया उपप्रक्रिया के पूरा होने के लिए प्रतीक्षा करने के लिए (और, के अलावा , बाहर निकलने की स्थिति को फिर से शुरू करने के लिए)।
यदि आप इस विधि का उपयोग करते हैं, तो आप इसे रोक देंगे कि प्रक्रिया ज़ोंबी बहुत लंबे समय तक झूठ बोल रही हैं।
(वैकल्पिक रूप से, आप subprocess.call()
या subprocess.check_call()
बुला और इंतजार कर। जब आप यह प्रक्रिया आईओ की जरूरत नहीं है के लिए उपयोग कर सकते हैं, वह पर्याप्त हो सकता है। लेकिन शायद इस एक विकल्प नहीं है, क्योंकि आपके अगर दो subprocesses करने लगते हैं समानांतर में चलाने के लिए, जो वे नहीं के साथ (check_
) call()
।)
आप के लिए प्रतीक्षा करने के लिए कई subprocesses है, तो आप क्या कर सकते हैं होगा माना जा
exit_codes = [p.wait() for p in p1, p2]
जो के रूप में जल्द ही सभी subprocesses है के रूप में देता है ख़त्म होना। फिर आपके पास रिटर्न कोड की एक सूची है जिसका आप मूल्यांकन कर सकते हैं।
प्रतीक्षा विधि का उपयोग करें: 'p1.wait(); p2.wait() ' –
इस प्रश्न को जांचें: http://stackoverflow.com/questions/6341358/subprocess-wait-not-waiting-for-popen-process-to-finish-when-using-threads – Calum
http: //stackoverflow.com/questions/100624/python-on-windows-how-to-wait-for-multiple-child-processes – Gjordis