multiprocessing
मॉड्यूल के उपयोग की आसानी से संचार संसाधनों के साथ प्रक्रियाओं को जोड़ने की बात आती है, क्या अलग पायथन वीएम लॉन्च करने के लिए subprocess
का उपयोग करने की तुलना में multiprocessing
का उपयोग करके एकाधिक प्रक्रियाओं को बढ़ाने के बीच कोई अन्य अंतर है?पाइथन मल्टीप्रोसेसिंग प्रक्रिया बनाम स्टैंडअलोन पायथन वीएम
उत्तर
पॉज़िक्स प्लेटफ़ॉर्म पर, multiprocessing
प्राइमेटिव्स अनिवार्य रूप से os.fork()
लपेटें। इसका अर्थ यह है कि बिंदु पर आप मल्टीप्रोसेसिंग में एक प्रक्रिया उत्पन्न करते हैं, बच्चे की प्रक्रिया में पहले से आयात/प्रारंभिक कोड पहले से ही रहता है।
यह एक वरदान हो सकता है यदि आपके पास प्रारंभ करने के लिए बहुत सी चीजें हैं और फिर प्रत्येक उपप्रजाति अनिवार्य रूप से उन प्रारंभिक वस्तुओं पर प्रतियां (प्रतियों) पर संचालन करती है, लेकिन यदि आप उपप्रजाति में जो चीज चलाते हैं, वह पूरी तरह से असंबंधित नहीं है ।
यूनिक्स-जैसे प्लेटफ़ॉर्म पर multiprocessing
के साथ फ़ाइल-हैंडल, सॉकेट आदि जैसे संसाधनों के लिए भी प्रभाव हैं।
इस बीच, subprocess
का उपयोग करते समय, आप प्रत्येक बार Popen
एक नई प्रक्रिया का उपयोग करते हुए एक बिल्कुल नया प्रोग्राम/दुभाषिया बना रहे हैं। इसका मतलब है कि उनके बीच कम साझा स्मृति हो सकती है, लेकिन इसका मतलब यह भी है कि आप एक पूरी तरह से अलग कार्यक्रम में, या एक ही कार्यक्रम में एक नया प्रवेश बिंदु बना सकते हैं।
विंडोज़ पर, अंतर multiprocessing
और subprocess
के बीच कम हैं, क्योंकि विंडोज fork()
प्रदान नहीं करता है।
यदि आप किसी संचार समस्या को अनदेखा करते हैं (यानी, यदि अलग पाइथन वीएम स्वयं के बीच संवाद नहीं करते हैं, या स्पष्ट रूप से स्थापित अन्य तंत्रों के माध्यम से संवाद करते हैं), तो कोई अन्य महत्वपूर्ण मतभेद नहीं हैं। (मुझे लगता है कि multiprocessing
, कुछ स्थितियों के तहत - यूनिक्स-जैसे प्लेटफ़ॉर्म, विशेष रूप से - फोर्क-निष्पादन जोड़ी हमेशा multiprocessing
द्वारा निहित किए गए अधिक कुशल fork
का उपयोग कर सकते हैं - लेकिन यह केवल कुछ प्रक्रियाओं के दौरान "पर्याप्त" नहीं है शामिल [[IOW, स्टार्टअप पर प्रदर्शन अंतर पूरे सिस्टम के प्रदर्शन के लिए सामग्री नहीं होगा]]।
धन्यवाद फिर से एलेक्स! – jldupont
- 1. मल्टीप्रोसेसिंग पाइथन वीएम
- 2. पायथन मल्टीप्रोसेसिंग - पाइप बनाम कतार
- 3. पायथन मल्टीप्रोसेसिंग मॉड्यूल
- 4. पायथन: मल्टीप्रोसेसिंग
- 5. पायथन मल्टीप्रोसेसिंग
- 6. पायथन मल्टीप्रोसेसिंग
- 7. पायथन मल्टीप्रोसेसिंग
- 8. सीमा पायथन वीएम मेमोरी
- 9. न्यूमपी बनाम मल्टीप्रोसेसिंग और एमएमएपी
- 10. पायथन मल्टीप्रोसेसिंग
- 11. मल्टीप्रोसेसिंग पायथन
- 12. पायथन मल्टीप्रोसेसिंग अचार प्रोटोकॉल
- 13. पायथन में मल्टीप्रोसेसिंग कतार
- 14. पाइथन में मल्टीप्रोसेसिंग अवरुद्ध
- 15. पायथन मल्टीप्रोसेसिंग लॉगिंग - क्यों multiprocessing.get_logger
- 16. मल्टीप्रोसेसिंग के साथ पाइथन मिक्स करें?
- 17. पायथन मल्टीप्रोसेसिंग डिज़ाइन
- 18. पायथन मल्टीप्रोसेसिंग तर्क: गहरी प्रतिलिपि?
- 19. पायथन मल्टीप्रोसेसिंग मॉड्यूल के साथ बनाई गई बाल प्रक्रिया
- 20. पायथन बनाम सूची वस्तुएं पाइथन
- 21. मॉनिटर स्टक पाइथन प्रक्रिया
- 22. पायथन मल्टीप्रोसेसिंग uuid.uuid4()
- 23. पायथन मल्टीप्रोसेसिंग पिकलिंग त्रुटि
- 24. पायथन: मल्टीप्रोसेसिंग इवेंट
- 25. लिनक्स में स्टैंडअलोन पायथन अनुप्रयोग
- 26. जावा ईई बनाम स्टैंडअलोन
- 27. मल्टीप्रोसेसिंग के साथ पाइथन सजावट
- 28. एक पायथन मल्टीप्रोसेसिंग पूल प्रोफाइलिंग
- 29. पायथन मल्टीप्रोसेसिंग पूल.मैप इंडेक्स एरर
- 30. मल्टीप्रोसेसिंग डीबग तकनीक
अच्छे अंक ... धन्यवाद! – jldupont
माइक्रोसॉफ्ट विंडोज के उच्च अंत संस्करणों में 'फोर्क() 'प्रदान करता है। विवरण के लिए मेरा [उत्तर] (http://stackoverflow.com/a/5372260/95735) देखें। –
@PiotrDobrogost लेकिन मुझे विश्वास नहीं है कि विंडोज़ पर "मल्टीप्रोसेसिंग" इसका लाभ उठाती है। – Crast