मैं अपने टेस्ट सूट एप्लिकेशन में पायथन को एम्बेड करने पर काम कर रहा हूं। इसका उद्देश्य डेटा एकत्र करने और परीक्षणों की रिपोर्ट करने के लिए कई परीक्षण स्क्रिप्ट चलाने के लिए पायथन का उपयोग करना है। एक टेस्ट रन के लिए एकाधिक टेस्ट स्क्रिप्ट वैश्विक चर और फ़ंक्शंस बना सकती हैं जिनका उपयोग अगली लिपि में किया जा सकता है।एक एम्बेडेड पायथन दुभाषिया को फिर से शुरू करने के लिए कैसे?
एप्लिकेशन एक्सटेंशन मॉड्यूल भी प्रदान करता है जो एम्बेडेड दुभाषिया में आयात किए जाते हैं, और एप्लिकेशन के साथ कुछ डेटा का आदान-प्रदान करने के लिए उपयोग किए जाते हैं।
लेकिन उपयोगकर्ता कई परीक्षण रन भी बना सकता है। मैं उन ग्लोबल्स, आयात और कई परीक्षण रनों के बीच आदान-प्रदान डेटा साझा नहीं करना चाहता हूं। मुझे यह सुनिश्चित करना होगा कि मैं परीक्षण वातावरण को नियंत्रित करने और एक ही परिणाम प्राप्त करने के लिए एक वास्तविक स्थिति में पुनरारंभ करता हूं।
मुझे दुभाषिया को फिर से शुरू करना चाहिए?
मैंने Py_Initialize() और Py_Finalize() का उपयोग किया, लेकिन दूसरी बार शुरू होने पर अपवाद प्राप्त करें जब मैं दुभाषिया को प्रदान किए गए एक्सटेंशन मॉड्यूल को दूसरी बार शुरू करता हूं। और प्रलेखन warns against using it more than once।
sub-interpreters का उपयोग एक्सटेंशन मॉड्यूल प्रारंभ के साथ समान चेतावनी है।
मुझे संदेह है कि मैं अपने विस्तार मॉड्यूल की शुरुआत के साथ कुछ गलत कर रहा हूं, लेकिन मुझे डर है कि तीसरी पार्टी एक्सटेंशन मॉड्यूल के साथ एक ही समस्या होती है।
शायद दुभाषिया को अपनी प्रक्रिया में लॉन्च करके इसे काम करना संभव है, ताकि यह सुनिश्चित किया जा सके कि सभी मेमोरी जारी हो जाएं।
वैसे, मैं इसके लिए बूस्ट-पायथन का उपयोग कर रहा हूं, जो कि Py_Finalize का उपयोग करके पुन: चेतावनी देता है!
कोई सुझाव?
धन्यवाद
का उपयोग कर सकता हूं तो मूल रूप से, मुझे अपने पायथन दुभाषिया को तुरंत चालू करना चाहिए, और उप-दुभाषियों को लॉन्च करने के लिए इस दुभाषिया का उपयोग करना चाहिए, कि उनके पास अपना स्वयं का नामस्थान है? एक व्यावहारिक समाधान की तरह दिखता है, यदि इन सबिनटरप्रेटर एक ही चेतावनी से पीड़ित नहीं हैं जैसे कि Py_NewInterpreter के साथ बनाया गया है। मैं उसमें विवरण देखता हूं और इसके साथ प्रयोग करता हूं। धन्यवाद! – nab
आपको यह मिला। एक इंटरेक्टिवइंटरप्रेटर को इंस्टेंट करना आपको हर बार एक नया वातावरण देता है। मुझे यकीन नहीं है कि माता-पिता दुभाषिया से विरासत में क्या है, इसके बारे में नियम क्या हैं, लेकिन इसे किसी भी तरह से नियंत्रित करना आसान होना चाहिए। –
ऐसा लगता है जो मैं चाहता हूं। ध्यान दें कि मॉड्यूल प्रारंभिकरण के लिए यह वही कमी है (वे केवल एक बार आरंभ किए जाते हैं)। लेकिन यह नामस्थान को साफ करने के लिए अच्छी तरह से काम करता है। धन्यवाद! – nab