2010-02-16 23 views
10

multiprocessing मॉड्यूल के उपयोग की आसानी से संचार संसाधनों के साथ प्रक्रियाओं को जोड़ने की बात आती है, क्या अलग पायथन वीएम लॉन्च करने के लिए subprocess का उपयोग करने की तुलना में multiprocessing का उपयोग करके एकाधिक प्रक्रियाओं को बढ़ाने के बीच कोई अन्य अंतर है?पाइथन मल्टीप्रोसेसिंग प्रक्रिया बनाम स्टैंडअलोन पायथन वीएम

उत्तर

13

पॉज़िक्स प्लेटफ़ॉर्म पर, multiprocessing प्राइमेटिव्स अनिवार्य रूप से os.fork() लपेटें। इसका अर्थ यह है कि बिंदु पर आप मल्टीप्रोसेसिंग में एक प्रक्रिया उत्पन्न करते हैं, बच्चे की प्रक्रिया में पहले से आयात/प्रारंभिक कोड पहले से ही रहता है।

यह एक वरदान हो सकता है यदि आपके पास प्रारंभ करने के लिए बहुत सी चीजें हैं और फिर प्रत्येक उपप्रजाति अनिवार्य रूप से उन प्रारंभिक वस्तुओं पर प्रतियां (प्रतियों) पर संचालन करती है, लेकिन यदि आप उपप्रजाति में जो चीज चलाते हैं, वह पूरी तरह से असंबंधित नहीं है ।

यूनिक्स-जैसे प्लेटफ़ॉर्म पर multiprocessing के साथ फ़ाइल-हैंडल, सॉकेट आदि जैसे संसाधनों के लिए भी प्रभाव हैं।

इस बीच, subprocess का उपयोग करते समय, आप प्रत्येक बार Popen एक नई प्रक्रिया का उपयोग करते हुए एक बिल्कुल नया प्रोग्राम/दुभाषिया बना रहे हैं। इसका मतलब है कि उनके बीच कम साझा स्मृति हो सकती है, लेकिन इसका मतलब यह भी है कि आप एक पूरी तरह से अलग कार्यक्रम में, या एक ही कार्यक्रम में एक नया प्रवेश बिंदु बना सकते हैं।

विंडोज़ पर, अंतर multiprocessing और subprocess के बीच कम हैं, क्योंकि विंडोज fork() प्रदान नहीं करता है।

+0

अच्छे अंक ... धन्यवाद! – jldupont

+1

माइक्रोसॉफ्ट विंडोज के उच्च अंत संस्करणों में 'फोर्क() 'प्रदान करता है। विवरण के लिए मेरा [उत्तर] (http://stackoverflow.com/a/5372260/95735) देखें। –

+0

@PiotrDobrogost लेकिन मुझे विश्वास नहीं है कि विंडोज़ पर "मल्टीप्रोसेसिंग" इसका लाभ उठाती है। – Crast

3

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

+0

धन्यवाद फिर से एलेक्स! – jldupont

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