मैं निम्नलिखित तरीके से उपप्रक्रिया मॉड्यूल का उपयोग करना चाहते हैं:मैं कैसे 'वास्तविक समय की जानकारी वापस एक subprocess.Popen से अजगर में मिलता है (2.5)
- है कि संभावित एक नई प्रक्रिया बनाने निष्पादित करने में लंबा समय लगता है।
- कब्जा
stdout
(याstderr
, या संभवतः दोनों, या तो एक साथ या अलग से) - उपप्रक्रिया से प्रक्रिया डेटा के रूप में यह में आता है, हर लाइन पर शायद फायरिंग की घटनाओं प्राप्त (wxPython में कहते हैं) या बस उन्हें बाहर मुद्रण अभी के लिए।
मैंने पॉपन के साथ प्रक्रियाएं बनाई हैं, लेकिन अगर मैं संचार का उपयोग करता हूं() प्रक्रिया समाप्त हो जाने के बाद, डेटा एक बार में आता है।
अगर मैं एक अलग थ्रेड कि एक अवरुद्ध myprocess.stdout
की readline()
(stdout = subprocess.PIPE
उपयोग करते हुए) मैं या तो इस विधि के साथ किसी भी लाइनों नहीं मिलता, जब तक प्रक्रिया समाप्त हो जाता है करता है बनाएँ। (कोई फर्क नहीं पड़ता कि मैंने bufsize के रूप में क्या सेट किया है)
क्या इससे डरने का कोई तरीका है जो भयानक नहीं है, और कई प्लेटफार्मों पर अच्छा काम करता है?
myprocess.stdout.readline() को काम करना चाहिए। क्या आप हमें अपना कोड दिखा सकते हैं? –
popen_obj.stdout() से Unbuffered पढ़ना वास्तव में काम करना चाहिए - लेकिन अगर आपको पीटीवी समर्थन के साथ प्लेटफ़ॉर्म तक ही सीमित नहीं है, तो आपका एप्लिकेशन Pexpect लाइब्रेरी के लिए उपयुक्त हो सकता है। –
यह एक अच्छा सवाल है और यह अभी भी "कई प्लेटफॉर्म पर अच्छी तरह से काम करता है" आवश्यकता के लिए अनुत्तरित प्रतीत होता है। –