2010-06-03 6 views
19

से पाइथन दुभाषिया को C/C++ application is well documented में एम्बेड करने वाले एकाधिक ऑपरेटिंग सिस्टम थ्रेड पर एकाधिक स्वतंत्र एम्बेडेड पायथन इंटरप्रिटर। एकाधिक ऑपरेटिंग सिस्टम थ्रेड पर एकाधिक पायथन दुभाषिया चलाने के लिए सबसे अच्छा तरीका क्या है (यानी एक ही प्रक्रिया में एक ऑपरेटिंग सिस्टम थ्रेड पर एक दुभाषिया) जिसे सी/सी ++ एप्लिकेशन से बुलाया जाता है? इस तरह के अनुप्रयोगों में स्मृति विखंडन और limitations of Py_Finalize() से संबंधित समस्याएं भी हो सकती हैं।सी/सी ++ प्रोग्राम

  1. अजगर धागा और pyconfig.h में इसलिए जीआईएल विकलांग इसे सरल (WITH_THREAD #undef)
  2. अजगर दुभाषिया स्रोत कोड के सभी परिवर्तनशील वैश्विक चर ले जाया रखने के लिए:

    एक ऐसी दृष्टिकोण निम्नलिखित किया जा सकता है थ्रेड स्थानीय संग्रहण (संदर्भ: Python on a Phone) के माध्यम से संदर्भित ढेर-आवंटित संरचना के लिए।

मेरे प्रश्न हैं:

  1. वहाँ किसी भी बेहतर दृष्टिकोण है?
  2. क्या कोई उपकरण है जो टीएलएस (थ्रेड लोकल स्टोरेज) के माध्यम से संदर्भित ढेर-आवंटित संरचना में पाइथन इंटरप्रेटर स्रोत कोड के वैश्विक चर के रूपांतरण को स्वचालित कर सकता है?

इसी प्रकार के विषयों को यहां चर्चा कर रहे हैं:

+5

समस्याओं का सेट जिसके लिए इष्टतम समाधान एकाधिक एम्बेडेड पायथन इंटरपेटर्स गायब हो जाते हैं।इस मार्ग पर जाने के बहुत अधिक प्रयास करने से पहले, मैं बहुत निश्चित रूप से निश्चित करता हूं कि एक बहु-प्रक्रिया, संदेश-गुजरने वाला समाधान अव्यवहारिक है। – Rakis

+0

जब आप "ओएस" कहते हैं, तो शायद आप "प्रक्रिया" का मतलब है? यदि ऐसा है, तो खोल का '&' लगभग हर चीज आपको चाहिए। ओएस आमतौर पर प्रक्रिया स्तर पर काम करते हैं। यदि आपका मतलब है "प्रक्रिया" कृपया अपना प्रश्न सही करें। यदि आपको सच में लगता है कि आपका मतलब "धागा" है, तो कृपया स्पष्ट करें कि आपको लगता है कि ओएस थ्रेड इतने महत्वपूर्ण क्यों हैं। –

उत्तर

3

यह बिल्कुल अपने प्रश्न का उत्तर नहीं है, लेकिन आप अलग प्रक्रियाओं के बजाय इस्तेमाल कर सकते हैं धागे, तो समस्याओं को गायब होना चाहिए।

सकारात्मक:

  • कोई ज़रूरत नहीं हैकिंग अजगर (और यह सुनिश्चित करें परिणाम इरादा सभी मामलों में काम करता है बनाने)
  • शायद कम विकास के प्रयास समग्र
  • नया अजगर संस्करणों के लिए आसान उन्नयन
  • विभिन्न प्रक्रियाओं के बीच स्पष्ट रूप से परिभाषित इंटरफ़ेस, इस प्रकार सही और डीबग

सह एनएस:

आप आईपीसी के लिए साझा स्मृति का उपयोग करते हैं, अपने जिसके परिणामस्वरूप आवेदन कोड आप क्या मिलता था से बहुत ज्यादा अलग नहीं करना चाहिए धागे के साथ।

यह देखते हुए कि कुछ लोग बहस कर रहे हैं कि आपको हमेशा use processes over threads होना चाहिए, मैं इसे कम से कम एक विकल्प के रूप में मानता हूं यदि यह आपकी बाधाओं को किसी भी तरह से फिट करता है।