मुझे subprocess.Popen या subprocess.call का उपयोग करने में कोई समस्या है जब मैं उन्हें कमांड लाइन निष्पादित करने के लिए उपयोग करता हूं जो बहुत सारे आउटपुट उत्पन्न करता है, पाइथन स्क्रिप्ट लटकती है, लेकिन क्या है अजीब बात है कि थोड़ी देर इंतजार करने के बाद, जबकि स्क्रिप्ट अपने लटकते राज्य में है, मुझे लगता है कि सीएमडी लाइन द्वारा आदेश दिया गया काम किया गया है, और केवल स्क्रिप्ट लटका दी गई है।पायथन: subprocess.Popen और subprocess.call hang
subprocess.call(cmd, shell = True)
#OR
subprocess.Popen(cmd, stdout = subprocess.PIPE, stdin = subprocess.PIPE, shell = True)
# HANGS HERE
print "show something after subprocess"
ध्यान दें कि अंतिम प्रिंट कभी निष्पादित नहीं होता है, लेकिन वास्तव में cmd निष्पादित किया गया है।
नोट भी cmd धारावाहिक बंदरगाह से संबंधित है, इसलिए जब मैं धारावाहिक केबल प्लग करता हूं, तो सबकुछ ठीक हो जाता है, और अंतिम प्रिंट स्टेटमेंट निष्पादित हो जाता है। लेकिन जब मैं टर्मिनल का उपयोग करता हूं तो सब कुछ ठीक है, भले ही धारावाहिक प्लग इन हो, यह केवल पायथन लिपि के साथ होता है।
धन्यवाद एक बहुत
यदि आप 'subprocess.PIPE' का उपयोग नहीं करते हैं, तो ओपी नहीं है, तो 'subprocess.call' का उपयोग करने में कोई समस्या नहीं है। – interjay
यह स्पष्ट नहीं करता है कि 'प्रिंट' कथन का आउटपुट माता-पिता में क्यों नहीं दिखाया जाता है। 'पॉपन()' बच्चे के लिए इंतजार नहीं करता है भले ही बच्चे की प्रक्रिया पूरी बफर के साथ पाइप को लिखने के प्रयास में अवरुद्ध हो। – jfs