2009-12-30 19 views
9

यदि कोई सॉफ़्टवेयर प्रोजेक्ट पाइथन के एक संस्करण का समर्थन करता है जो मल्टीप्रोसेसिंग को वापस भेज दिया गया है, तो क्या threading.Lockmultiprocessing.Lock से अधिक उपयोग करने का कोई कारण है? multiprocessing लॉक भी सुरक्षित नहीं होगा?क्या थ्रेडिंग का उपयोग करने का कोई कारण है। मल्टीप्रोसेसिंग पर लॉक करें। लॉक?

उस बात के लिए, वहाँ threading कि multiprocessing में आते हैं किसी भी तुल्यकालन पुरातन उपयोग करने के लिए एक कारण है?

उत्तर

12

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

+2

ऐसा नहीं है कि 'multiprocessing' के रूप में पोर्टेबल threading' है के रूप में' नहीं है उल्लेख करने के लिए;) –

+1

फिर क्यों होगा कि तरह :) – jnoller

2

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

उदाहरण के लिए, प्रक्रिया-वार लॉक प्रक्रिया के सभी धागे को बहुत अच्छी तरह से अवरुद्ध कर सकता है। और यदि ऐसा नहीं होता है, तो लॉक जारी करना प्रक्रिया के धागे को जगा नहीं सकता है।

संक्षेप में, यदि आप अपने कोड को निश्चित रूप से काम करना चाहते हैं, तो आप थ्रेड-सिंक्रनाइज़ेशन प्राइमेटिव का उपयोग करना चाहिए यदि आप थ्रेड और प्रक्रिया-सिंक्रनाइज़ेशन प्राइमेटिव का उपयोग कर रहे हैं यदि आप प्रक्रियाओं का उपयोग कर रहे हैं। अन्यथा, यह केवल आपके प्लेटफॉर्म पर काम कर सकता है, या यहां तक ​​कि सिर्फ Python के आपके विशिष्ट संस्करण के साथ।

0

multiprocessing और threading पैकेजों के पास थोड़ा अलग लक्ष्य हैं, हालांकि दोनों समवर्ती संबंधित हैं। threading, एक प्रक्रिया के भीतर धागे का समन्वय करता है, जबकि multiprocessing कई प्रक्रियाओं के समन्वय के लिए धागे की तरह इंटरफ़ेस प्रदान करते हैं।

आपके आवेदन नई प्रक्रियाओं जो डेटा तुल्यकालन की आवश्यकता होती है अंडे नहीं है, तो multiprocessing में थोड़ा और अधिक भारी वजन है, और threading पैकेज बेहतर अनुकूल होना चाहिए।

+0

मैं सूत्रण और बहु ​​के बीच अंतर को समझते हैं। क्यों एक बहु खत्म हो चुका है सूत्रण की समन्वयन पुरातन का उपयोग करना चाहते हैं मैं उत्सुक था। –