में बहु आप एक से अधिक CPU का लाभ उठाने अपनी गणना वितरित करने के लिए। चूंकि प्रत्येक CPU समानांतर में चलता है, आप प्रभावी रूप से एक साथ कई कार्यों को चलाने में सक्षम होते हैं। आप सीपीयू-बाउंड कार्यों के लिए मल्टीप्रोसेसिंग का उपयोग करना चाहेंगे । एक उदाहरण एक विशाल सूची के सभी तत्वों की राशि की गणना करने की कोशिश कर रहा होगा। यदि आपकी मशीन में 8 कोर हैं, तो आप सूची को 8 छोटी सूचियों में "काट" सकते हैं और प्रत्येक सूची के योग की गणना अलग-अलग कोर पर अलग-अलग कर सकते हैं और फिर बस उन संख्याओं को जोड़ सकते हैं। ऐसा करने से आपको ~ 8x स्पीडअप मिलेगा।
में सूत्रणआपको कई सीपीयू की आवश्यकता नहीं है। एक कार्यक्रम की कल्पना करें जो वेब पर बहुत सारे HTTP अनुरोध भेजता है। यदि आपने एकल-थ्रेडेड प्रोग्राम का उपयोग किया है, तो यह प्रत्येक अनुरोध पर निष्पादन (ब्लॉक) को रोक देगा, प्रतिक्रिया की प्रतीक्षा करेगा और फिर एक बार प्रतिक्रिया प्राप्त करने के बाद जारी रहेगा। यहाँ समस्या यह है कि आपका CPU वास्तव में काम करने के लिए किसी बाहरी सर्वर की प्रतीक्षा करते हुए काम नहीं कर रहा है; यह वास्तव में इस बीच कुछ उपयोगी काम कर सकता था! फिक्स थ्रेड्स का उपयोग करना है - आप उनमें से कई बना सकते हैं, प्रत्येक वेब से कुछ सामग्री के अनुरोध के लिए जिम्मेदार है। थ्रेड्स के बारे में अच्छी बात यह है कि, भले ही वे एक सीपीयू पर चलते हों, सीपीयू समय-समय पर एक थ्रेड के निष्पादन को "फ्रीज" करता है और दूसरे को निष्पादित करने के लिए कूदता है (इसे संदर्भ स्विचिंग कहा जाता है और यह लगातार गैर-नियतात्मक होता है अंतराल)। - थ्रेडिंग का उपयोग करें।
asyncio अनिवार्य रूप से जहां CPU नहीं बल्कि प्रोग्रामर (या वास्तव में आपके एप्लिकेशन) के रूप में फैल रहा है , यह तय करें कि संदर्भ स्विच कहां और कब होता है । Python में आप await
अपने coroutine ( async
कीवर्ड का उपयोग करके परिभाषित ) के निष्पादन को निलंबित करने के लिए एक कीवर्ड का उपयोग करते हैं ।