में धागे बनाम प्रक्रियाएं मैं पाइथन का उपयोग करके एक प्रोग्राम शुरू करने जा रहा हूं जो ज्यादातर मतदान कर रहा है, यह लगातार सीरियल पोर्ट (PySerial
के माध्यम से) से पढ़ा जाएगा और फ़ाइल डिस्क्रिप्टर से पढ़ा जाएगा जो समय से बदल जाएगा पहर। मैंने threading
मॉड्यूल को देखना शुरू कर दिया लेकिन फिर मैंने more और more को multiprocessing
मॉड्यूल का उपयोग करने के सुझावों को ढूंढना जारी रखा।पाइथन
मुझे पाइथन में अच्छी तरह से पता नहीं है, ज्यादातर सी पृष्ठभूमि से आ रहा है। पायथन में थ्रेडेड दृष्टिकोण के तकनीकी फायदे क्या हैं?
सी में, धागे डेटा बनाम साझा करते हैं, कुछ आईपीसी को संवाद करने के लिए सेट करते हैं, जो कि पाइथन के लिए समान लगता है?
मेरे USECASE:
Main process (or thread?) -
start & initialize
|
V
spaw child----------------------> start & initialize
| |
V V
while (1) <------------+ wait for data<------+
| | | |
V | V |
read file descriptors | read from |
| | serial port<-----+ |
V | | | |
value changed? ------No--+ V | |
| ^ message done?--No-+ |
V | | |
Report change------------+ V |
over serial alert parent---------+
तो मैं धागे में सोच रहा था, क्योंकि यह डेटा साझा धारावाहिक से अधिक मिला है आसान हो जाएगा, और वे सीरियल पोर्ट के लिए एक साझा संभाल कर सकते हैं। क्या यह समझ में आता है, या क्या मैं इस बारे में गलत तरीके से एक पाइथोनिक दृष्टिकोण से सोच रहा हूं?
मल्टीप्रोसेसिंग जीआईएल को हटाने के लिए एक (कुछ हद तक छद्म आईएमएचओ) तरीका है। इस मामले में, मुझे लगता है कि 'थ्रेडिंग' जाने का रास्ता है। – mgilson
@ डाउनवॉटर - क्या मुझे एक कारण हो सकता है कि आप यह प्रश्न क्यों महसूस करते हैं: "अनुसंधान प्रयास नहीं दिखाता है, यह अस्पष्ट है या उपयोगी नहीं है"? – Mike