2011-04-16 10 views
5

6-7 साल पहले मैंने केवल एक बार दुभाषिया चलाने के द्वारा तंग संसाधनों env पर पायथन चलाने के लिए एक पहल देखी, जबकि कई स्क्रिप्ट एक ही समय में इसका उपयोग करने की इजाजत दे रही थीं।एक ही पायथन दुभाषिया उदाहरण एक साथ कई स्क्रिप्ट चल रहा है?

विचार दुभाषिया स्टार्टअप ओवरहेड को बचाने और रैम को बचाने के लिए बॉट था।

क्या कुछ समान है?

यह प्रश्न Python: Execute multiple Scripts simultaneously from same Interpreter समरूपता को संबोधित नहीं करता है। कम से कम उत्तर अनुक्रमिक चल रहे थे, लेकिन मुझे एक साथ की आवश्यकता है :)

विचार?

उत्तर

9

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

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

+0

धन्यवाद। मुझे निश्चित रूप से यह सत्यापित करना होगा :) –

3

पायथन thread और threading मॉड्यूल के माध्यम से थ्रेडिंग का समर्थन करता है (एक लोलेवल, दूसरा एक हाईलेवल है)।

संबंधित मुद्दे