शीर्षक में यह है, लेकिन यहां कुछ विस्तार हैं। मान लीजिए कि मुख्य धागा एक और धागा पैदा करता है, जहां कुछ कोड पायथन दुभाषिया में लोड किया जाता है और फिर एक और धागा कहा जाता है जो एक ही पायथन इंटरफ़ेस (PyImport या PyRun के माध्यम से) के माध्यम से कुछ और कोड निष्पादित करता है। क्या ऐसा परिदृश्य व्यवहार्य है?क्या दो धागे एक ही एम्बेडेड पायथन दुभाषिया का एक साथ उपयोग कर सकते हैं?
उत्तर
यदि मैं आप जो पूछ रहा हूं उसका पालन कर रहा हूं, तो हाँ आप यह कर सकते हैं, लेकिन पाइथन दुभाषिया स्वयं पूरी तरह से थ्रेड सुरक्षित नहीं है। इसके आस-पास पहुंचने के लिए, आपको यह सुनिश्चित करना होगा कि प्रत्येक थ्रेड किसी भी पायथन कोड को कॉल करने से पहले दुभाषिया के GIL प्राप्त करता है और फिर इसे बाद में रिलीज़ करता है। यानी प्रत्येक धागा निम्नलिखित जब क्रियान्वित अजगर कोड करने की जरूरत है:
PyGILState_STATE gstate;
gstate = PyGILState_Ensure();
// Do any needed Python API operations, execute python code
// Release the GIL. No Python API allowed beyond this point.
PyGILState_Release(gstate);
इसके अलावा, आप धागे सुनिश्चित करने के लिए अजगर दुभाषिया शुरू करने के बाद निम्न करना चाहिए/जीआईएल ठीक से प्रारंभ कर रहे हैं:
if (! PyEval_ThreadsInitialized()) {
PyEval_InitThreads();
}
के लिए Non Python Created Threads देखें इस पर अधिक जानकारी।
टिप्पणियों में उल्लिखित अनुसार, यह ध्यान देने योग्य है कि यह वास्तव में केवल दुभाषिया तक पहुंच को क्रमबद्ध करने के लिए है, लेकिन यह मानना सबसे अच्छा है कि आप पाइथन के सीपीथन कार्यान्वयन का उपयोग कर रहे हैं।
क्या आप निश्चित हैं, महाकाव्य? यह निश्चित रूप से मुझे लगता है कि आप (जैसे सबसे अच्छे ...) * serializing * धागे के एक दुभाषिया उदाहरण के उपयोग के लिए देख रहे हैं। ऐसा लगता है कि ओपी चाहता है कि प्रत्येक (सी ++) थ्रेड अपने पाइथन दुभाषिया-उदाहरण के लिए और समानांतर में दोनों को चलाने में सक्षम हो, सीडी + द्वारा किए गए थ्रेडिंग के साथ, पायथन नहीं। या, क्या मैं ओपी के इरादे को गलत पढ़ रहा हूं? –
@ माइकरोबिन्सन मैंने सोचा कि वह दो धागे एक ही दुभाषिया साझा करना चाहता था। – mshildt
हाँ, और, हालांकि, पाइथन के "धागे" "बस" प्रकार के 'धागे "हैं (क्योंकि, ज़ाहिर है, पायथन एक दुभाषिया है ...), मैं थोड़ी सी सोचता हूं कि मैं अपने थ्रेडिंग को पायथन कोड में डाल दूंगा। हम जानते हैं कि पायथन सही ढंग से * इसके * थ्रेडिंग के संस्करण का प्रबंधन करता है ... –
- 1. एक पाइथन एम्बेडेड दुभाषिया
- 2. क्या मैं एक ही emacs से दो अलग lisp + कीचड़/swanks का उपयोग कर सकते हैं?
- 3. दो धागे रोकें एक ही मूल्य
- 4. क्या दो धागे एक ही सरणी के विभिन्न तत्वों को लिख सकते हैं?
- 5. क्या आप एक ही वीबीओ के साथ कई लक्ष्यों का उपयोग कर सकते हैं?
- 6. क्या दो अलग ब्राउज़र एक कुकी साझा कर सकते हैं?
- 7. क्या हम प्रतिक्रियाशील देशी में नेविगेटर का उपयोग कर एक ही मार्ग प्रस्तुत कर सकते हैं?
- 8. एक ही धागे को कई बार जागृत करने के बारे में सूचित कर सकते हैं?
- 9. क्या आप अपने धागे के साथ पृष्ठभूमि थ्रेड पर एक शेडर को प्रीवार्म कर सकते हैं?
- 10. एम्बेडेड पायथन
- 11. क्या एक ही स्क्लाइट के डेटाबेस के विभिन्न कनेक्शन एक साथ लेनदेन शुरू कर सकते हैं?
- 12. RoR - एक ही ब्लॉक का उपयोग कर दो प्रतिक्रिया_ प्रारूप?
- 13. क्या एकाधिक डॉकर कंटेनर एक ही होस्ट/पोर्ट का उपयोग कर चला सकते हैं?
- 14. Django - दो डेटाबेस एक ही डेटाबेस का उपयोग कर?
- 15. क्या आप जावास्क्रिप्ट का उपयोग कर एक से अधिक छवियों को एक साथ जोड़ सकते हैं?
- 16. पाइथन दुभाषिया एक सी ++ वर्ग
- 17. क्या आप एक ही आईडी का उपयोग एकाधिक HTML पृष्ठ के लिए कर सकते हैं?
- 18. क्या टीसीपी और यूडीपी सॉकेट एक ही बंदरगाह का उपयोग कर सकते हैं?
- 19. क्या मैं एक ही सर्वर पर एपीसी और memcached का उपयोग कर सकते हैं?
- 20. क्या हम एक आवेदन में दो Google क्लाउड मैसेजिंग SENDER_ID का उपयोग कर सकते हैं?
- 21. क्या एक ही नाम के साथ दो गुण हो सकते हैं?
- 22. क्या आप एक साथ डीएलएस बंडल कर सकते हैं?
- 23. क्या दो एएसपीएक्स पेज कक्षा के पीछे एक ही कोड का उत्तराधिकारी हो सकते हैं?
- 24. एक ही पायथन दुभाषिया उदाहरण एक साथ कई स्क्रिप्ट चल रहा है?
- 25. नैनोटाइम धागे में काम कर सकते हैं
- 26. प्रोसेस वीएस थ्रेड: क्या दो प्रक्रियाएं समान साझा स्मृति साझा कर सकती हैं? दो धागे कर सकते हैं?
- 27. पायथन एक ही लॉगर
- 28. दो धागे, एक ही स्थिर चर, एक ही मूल्य, समवर्ती पहुँच
- 29. एम्बेडेड पायथन दुभाषिया के आकार को अनुकूलित करना
- 30. जावास्क्रिप्ट एक फाइल सिस्टम का उपयोग कर सकते हैं?
क्या आप दो थ्रेड समान एम्बेडेड दुभाषिया को साझा करना चाहते हैं? – mshildt
@epicbrew yep, वही दुभाषिया, दोनों धागे एक ही स्मृति तक पहुंचने वाले – user3496846