[यह मेरी पहली पोस्ट है और मुझे आशा है कि मैंने एसई के उपयोग को पूरी तरह से गलत नहीं माना है - यदि मैं पहले से माफी मांगता हूं]
मैं "bgschaid" से सहमत हूं कि प्रदान की गई जानकारी के आधार पर प्रश्न का उत्तर देना बहुत मुश्किल है। यदि आप मल्टी-कोर आर्किटेक्चर का दोहन करने के लिए निम्न स्तर की दिनचर्या चाहते हैं या यदि आपको शर्मनाक समानांतर समस्याओं के लिए समानता का दोहन करने की आवश्यकता है - या कुछ के बीच में अंतर होता है। पायथन में विभिन्न समानांतर कंप्यूटिंग संभावनाओं का अवलोकन यहां पाया जा सकता है ।
पूर्व मामले में मैं निश्चित रूप से NumPy / SciPy जैसे उपकरणों का उपयोग करने की सलाह देता हूं, जो कम से कम एमकेएल संकलित संस्करण से बहु-कोर आर्किटेक्चर का समर्थन करता है। यहां आप पर्यावरण चर "MKL_NUM_THREADS" के माध्यम से उपयोग करने के लिए कोर की संख्या को नियंत्रित कर सकते हैं। यह अत्यधिक अनुकूलित पुस्तकालयों पर निर्भर करता है जो हम प्रदर्शन के जानकारों को हरा सकते हैं। मेरा मानना है कि आमतौर पर जब भी संभव हो इन उच्च गुणवत्ता और अत्यधिक अनुकूलित पुस्तकालयों का उपयोग करने की सलाह दी जाती है।
यदि आप एक मोटे स्तर पर समानता का दोहन करना चाहते हैं, तो पायथन मानक टूल मल्टीप्रोसेसिंग का उपयोग करना आसान है - और यह साझा डेटा ऑब्जेक्ट का भी समर्थन करता है। मल्टीप्रोसेसिंग पैकेज के हिस्से के रूप में उपयोग करने के लिए विभिन्न उपकरण हैं । मैंने अच्छे परिणामों के साथ कई समस्याओं के लिए map_async (SIMD लाइक ) और apply_async (MIMD लाइक ) का उपयोग किया है । बहु पैकेज काफी आसान उपयोग करने के लिए और अजगर का मतलब है कि आप आसानी से करने के लिए अपने कोड के अन्य संभावित प्रयोक्ताओं के लिए इसका इस्तेमाल करने में सक्षम हो उम्मीद कर सकते हैं का एक मानक हिस्सा जा रहा है। मल्टीप्रोसेसिंग भी सीधे NumPy डेटा ऑब्जेक्ट्स से लिंक करता है। मल्टीप्रोसेसिंग का उपयोग करते समयमैं तुम्हें करने के लिए वातावरण चर "MKL_NUM_THREADS" स्थापित करने के लिए सिफारिश करेंगे 1 ऐसी है कि NumPy केवल प्रत्येक प्रक्रिया / कार्यकर्ता के लिए एक कोर अनुमति दी है - अन्यथा आप NumPy समानांतर और जो संसाधन विवाद में जा सकते हैं बहु जो एक प्रदर्शन में ख़राबी के लिए होता है। मल्टीप्रोसेसिंग एक ही ऑपरेटिंग सिस्टम के तहत मल्टी-सीपीयू / मल्टी-कोर आर्किटेक्चर के लिए ठीक काम करता है। मैंने 4 x Xeon E7-4850 CPU (प्रत्येक 10 कोर) और 512 GB मेमोरी के साथ एक साझा मेमोरी कंप्यूटर पर मल्टीप्रोसेसिंग का उपयोग किया है और यह बहुत अच्छी तरह से काम करता है। साझा सरणियों द्वारा नियंत्रित किया जा सकता है multiprocessing.Array या sharedctypes । आप यहां पायथन प्रलेखन पा सकते हैं - जांच करेंLibrary.pdf फ़ाइल। मेरी कुछ स्लाइड्स हैं, जिनमें से कुछ बुनियादी हिस्सों को समझाया गया है - यदि आप चाहें तो मुझे पी.एम.
यदि आपके पास वितरित स्मृति के साथ क्लस्टर कॉन्फ़िगरेशन है, तो मेरा मानना है कि mpi4py संभवतः पसंदीदा उपकरण है। मैंने खुद इसका उपयोग नहीं किया है, लेकिन मुझे पता है कि पायथन समानांतर प्रोग्रामिंग में इसका बहुत उपयोग किया जा रहा है।