मैंने एक धारावाहिक बंदरगाह के आउटपुट की निगरानी करने के लिए एक स्क्रिप्ट बनाई है जो हर आधा घंटे डेटा की 3-4 लाइनें प्राप्त करती है - स्क्रिप्ट ठीक चलती है और बंदरगाह से निकलने वाली हर चीज़ को पकड़ती है दिन के अंत में क्या मायने रखती है ...पायथन/पायसियरियल और सीपीयू उपयोग
क्या कीड़े मुझे यह है कि CPU उपयोग नहीं बल्कि एक प्रोग्राम है जो सिर्फ एक सीरियल पोर्ट की निगरानी कर रहा है के लिए उच्च लगता है, 1 कोर हमेशा 100% उपयोग में हो जाएगा इस जबकि लिपि चल रही है।
मैं मूल रूप से इस सवाल में कोड का एक संशोधित संस्करण चल रहा हूँ: pyserial - How to Read Last Line Sent from Serial Device
मैं मतदान की कोशिश की है नियमित अंतराल पर inWaiting() फ़ंक्शन और इसे नींद जब (inWaiting) होने 0 है - मैं मैंने 1 सेकंड से 0.001 सेकेंड तक अंतराल की कोशिश की (मूल रूप से, जितनी बार मैं सीपीयू उपयोग को चलाए बिना कर सकता हूं) - यह पहली पंक्ति को पकड़ने में सफल होगा लेकिन बाकी डेटा को याद करने में प्रतीत होता है।
धारावाहिक बंदरगाह के टाइमआउट को समायोजित करने से सीपीयू उपयोग पर कोई प्रभाव नहीं पड़ता है, न ही सुनने के कार्य को अपने स्वयं के धागे में डालता है (ऐसा नहीं कि मुझे वास्तव में एक अंतर की उम्मीद है लेकिन यह कोशिश करने लायक था)।
- क्या इस सीपीयू का उपयोग कर पाइथन/पेसरियल होना चाहिए? (यह ओवरकिल जैसा लगता है)
- क्या मैं इस खोज पर अपना समय बर्बाद कर रहा हूं/क्या मुझे सिर्फ बुलेट काटने और स्क्रिप्ट को उस अवधि के लिए सोना चाहिए, जो मुझे पता है कि कोई डेटा नहीं आ रहा है?
बहुत बढ़िया! यह अब एक बिल्ली का बच्चा की तरह शुद्ध है, शून्य सीपीयू उपयोग के बगल में और यह उस सब कुछ पकड़ लेता है जिसे मैं फेंक रहा हूं। मैं इस इंप्रेशन के तहत पढ़ने (inWaiting()) का उपयोग कर रहा था कि यह पढ़ने के समान ही काम करेगा (1) - जाहिर है यह मामला नहीं है। मेरे लिए वह सही करने के लिए धन्यवाद। –
कूल, और मुझे पाइसरियल खोजने के लिए धन्यवाद, मैं इसे अगली बार सीरियल बंदरगाहों के साथ खेलता हूं :) – tonfa
यह उत्कृष्ट है - सेटअप और उपयोग करने के लिए दर्द रहित, यह एकमात्र चीज थी जिसमें मुझे परेशानी थी और ** मैं ** समस्या थी –