मैं इस बारे में थोड़ा उलझन में हूं कि पाइथन में मल्टीथ्रेडिंग काम करता है या नहीं।
मुझे पता है कि इस बारे में बहुत सारे सवाल हैं और मैंने उनमें से कई को पढ़ा है, लेकिन मैं अभी भी भ्रमित हूं। मैं अपने स्वयं के अनुभव से जानता हूं और दूसरों को स्टैकऑवरफ्लो पर अपने स्वयं के उत्तर और उदाहरण पोस्ट करते हुए देखा है कि वास्तव में पाइथन में मल्टीथ्रेडिंग संभव है। तो ऐसा क्यों है कि हर कोई कहता है कि अजगर जीआईएल द्वारा बंद है और एक समय में केवल एक धागा ही चल सकता है? यह स्पष्ट रूप से काम करता है। या कुछ भेद है जो मुझे यहाँ नहीं मिल रहा है?
कई पोस्टर / उत्तरदाता यह भी उल्लेख करते हैं कि थ्रेडिंग सीमित है क्योंकि यह कई कोर का उपयोग नहीं करता है। लेकिन मैं कहूंगा कि वे अभी भी उपयोगी हैं क्योंकि वे एक साथ काम करते हैं और इस तरह संयुक्त कार्यभार को तेजी से पूरा करते हैं। मेरा मतलब है कि एक पायथन थ्रेड मॉड्यूल भी क्यों होगा?
अपडेट करें:
अब तक के सभी उत्तरों के लिए धन्यवाद। जिस तरह से मैं इसे समझता हूं वह यह है कि मल्टीथ्रेडिंग केवल कुछ आईओ कार्यों के समानांतर में चलेगा, लेकिन सीपीयू-बाउंड मल्टीपल कार्यों के लिए एक समय में केवल एक ही चल सकता है।
मुझे पूरी तरह से यकीन नहीं है कि व्यावहारिक अर्थों में मेरे लिए इसका क्या मतलब है, इसलिए मैं सिर्फ उस तरह के कार्य का एक उदाहरण दूंगा, जिसे मैं मल्टीथ्रेड करना चाहता हूं। उदाहरण के लिए, मान लें कि मैं स्ट्रिंग की एक बहुत लंबी सूची के माध्यम से लूप करना चाहता हूं और मैं प्रत्येक सूची आइटम पर कुछ बुनियादी स्ट्रिंग ऑपरेशन करना चाहता हूं। अगर मैं सूची को विभाजित करता हूं, तो प्रत्येक लूप को मेरे लूप / स्ट्रिंग कोड द्वारा संसाधित होने के लिए एक नए थ्रेड में भेजें, और परिणाम एक कतार में वापस भेजें, क्या ये वर्कलोड लगभग एक ही समय में चलेंगे? सबसे महत्वपूर्ण बात यह है कि यह सैद्धांतिक रूप से स्क्रिप्ट को चलाने में लगने वाले समय को गति देगा?
एक और उदाहरण हो सकता है अगर मैं चार अलग-अलग थ्रेड्स में पीआईएल का उपयोग करके चार अलग-अलग चित्रों को प्रस्तुत कर सकता हूं और सहेज सकता हूं, और क्या यह एक दूसरे के बाद चित्रों को एक-एक करके संसाधित करने की तुलना में तेज है? मुझे लगता है कि यह गति-घटक वह है जो मैं सही शब्दावली के बजाय वास्तव में सोच रहा हूं।
मुझे मल्टीप्रोसेसिंग मॉड्यूल के बारे में भी पता है, लेकिन अभी मेरा मुख्य हित छोटे से मध्यम कार्य भार (10-30 सेकंड) के लिए है और इसलिए मुझे लगता है कि मल्टीथ्रेडिंग अधिक उपयुक्त होगा क्योंकि उपप्रोसेस आरंभ करने के लिए धीमा हो सकता है।