पायथन में मल्टीप्रोसेसिंग कैसे लागू करें?



यह लेख आपको पायथन में मल्टीप्रोसेसिंग से परिचित कराएगा और प्रक्रिया में अंत में आपको एक प्रोग्रामेटिक प्रदर्शन भी देगा।

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

इस लेख में निम्नलिखित बिंदुओं को शामिल किया जाएगा,





कैसे जावास्क्रिप्ट में एक सरणी की लंबाई पाने के लिए

हमें शुरू करने दें,

पायथन में मल्टीप्रोसेसिंग

मल्टीप्रोसेसिंग क्या है?

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



मल्टीप्रोसेसिंग की आवश्यकता

एक कंप्यूटर सिस्टम की कल्पना करें जिसके प्रोसेसर में केवल एक कोर है। यदि इस एकल कोर को कई कार्य सौंपे जाते हैं, तो इसके बीच में प्रत्येक कार्य को तोड़ दिया जाता है और फिर अगले पर स्विच किया जाता है। यह प्रत्येक कार्य को पूरा करने के लिए आवश्यक समय की मात्रा में वृद्धि नहीं करेगा, बल्कि सिस्टम की समग्र दक्षता को भी कम करेगा।

दूसरी ओर एक मल्टीप्रोसेसिंग कंप्यूटर, एक प्रोसेसर हो सकता है, जिसके बदले में इसके अंदर कई कार्य इकाइयाँ होती हैं, जिन्हें व्यक्तिगत कोर कहा जाता है जो एक ही समय में कई अलग-अलग कार्यों को स्वतंत्र रूप से चलाने की क्षमता रखते हैं। यह न केवल सिस्टम की दक्षता को बढ़ाता है, बल्कि लंबे समय में सिस्टम के रनटाइम को एक महत्वपूर्ण राशि से कम करता है।



पाइथन में एक मल्टीप्रोसेसिंग प्रणाली दो प्रकार की हो सकती है।

मल्टी प्रोसेसर सिस्टम

इस प्रणाली में मूल रूप से इसके हुड के नीचे कई प्रोसेसर मौजूद हैं, जिनमें से प्रत्येक एक समय में एक कार्य कर सकता है और एक स्वतंत्र घटक के रूप में कार्य कर सकता है।

मल्टी-कोर प्रोसेसर सिस्टम

इस प्रणाली में एक ही प्रोसेसर में कई कोर मौजूद हैं, जिसके भीतर कोर एक अलग इकाई के रूप में कार्य करता है और स्वतंत्र रूप से कार्य करता है जो इसे सौंपा गया है।

पायथन में मल्टीप्रोसेसिंग के लिए कोड

अब जब आप मल्टीप्रोसेसिंग की मूल अवधारणा के आदी हैं, तो आइए जानें कि पायथन में मल्टीप्रोसेसिंग कैसे प्राप्त की जा सकती है।

पायथन में, दुभाषिया में एक बहुत ही सरल और सहज ज्ञान युक्त एपीआई होता है जो एकल कार्य लेता है, इसे कई घटकों में विभाजित करता है और स्वतंत्र रूप से संसाधित होता है।

अजगर में मल्टीप्रोसेसिंग की इस अवधारणा को बेहतर ढंग से समझने के लिए नीचे दिए गए प्रोग्राम मॉड्यूल पर एक नज़र डालें।

उदाहरण 1

# इंपोर्टिंग मल्टीप्रोसेसिंग मॉड्यूल इंपोर्ट मल्टीप्रोसेसिंग डीप प्रिंट_ क्यूब (संख्या): '' 'फंक्शन दी गई संख्या के क्यूब को प्रिंट करने के लिए' 'प्रिंट (' क्यूब: {} ''। फॉर्मेट (संख्या * संख्या * संख्या)) डिफेंस_सक्वेयर (संख्या): दिए गए संख्या के वर्ग को प्रिंट करने के लिए '' 'फंक्शन' 'प्रिंट (' स्क्वायर: {} '। फॉर्मेट (संख्या * संख्या)) यदि __name__ ==' '__main__': # बनाने की प्रक्रिया p1 = multiprocessing.Process (लक्ष्य = print_square) args = (10,)) P2 = मल्टीप्रोसेसिंग ।rocess (लक्ष्य = Print_cube, args = (10,)) # प्रारंभिक प्रक्रिया 1 p1.start () # प्रक्रिया प्रारंभ 2 P2.start () # प्रक्रिया 1 के बाद प्रतीक्षा p1 समाप्त हो गई है। .join () # प्रतीक्षा करें जब तक प्रक्रिया 2 समाप्त नहीं हो जाती है तब तक P2.join () # दोनों प्रक्रियाएं प्रिंट ('D' '!) समाप्त हो जाती हैं।

आउटपुट

वर्ग: 100

घन: १०००

कर दी है!

अब हम इसे बेहतर समझने के लिए इस कार्यक्रम का विश्लेषण करते हैं।

  1. पहला कदम मल्टीप्रोसेसिंग मॉड्यूल को आयात करना है। ऐसा करने के लिए, निम्नलिखित सिंटैक्स का उपयोग करें: मल्टीप्रोसेसिंग आयात करें।

  2. अब जब मल्टीप्रोसेसिंग मॉड्यूल आयात किया गया है, तो हम आगे बढ़ते हैं और एक प्रक्रिया बनाते हैं। ऐसा करने के लिए, हम प्रक्रिया वर्ग की एक वस्तु बनाते हैं और इसे निम्नलिखित तर्क देते हैं। टारगेट: वह फंक्शन जिसे इस प्रोसेस और आर्ग्स द्वारा निष्पादित किया जाना है: वे तर्क जिन्हें टार्गेट फंक्शन में पास करने की आवश्यकता है।

नोट: एक प्रोसेस कंस्ट्रक्टर में कई लक्ष्यों के साथ-साथ तर्कों को भी लेने की क्षमता होती है, लेकिन ऊपर दिए गए उदाहरण में हमने अपनी प्रक्रिया को केवल दो लक्ष्य और तर्क दिए हैं, जैसा कि नीचे दिखाया गया है।

पी 1 = मल्टीप्रोसेसिंग।प्रोसेस (लक्ष्य = प्रिंट_स्क्वेयर, आर्ग्स = (10,))

पी 2 = मल्टीप्रोसेसिंग।प्रोसेस (लक्ष्य = प्रिंट_क्यूब, आर्ग्स = (10,))

  1. अब जब यह प्रक्रिया बन गई है, तो हम इसे शुरू करने के लिए सिंटैक्स लिखें।

p1.start ()

P2.start ()

प्रक्रिया शुरू होने के बाद, वर्तमान कार्यक्रम और पहले से ही निष्पादित एक साथ चलाया जा रहा है। यदि एक निश्चित स्थिति में, आपको वर्तमान कार्यक्रम के निष्पादन को रोकने की आवश्यकता है और केवल पहले से मौजूद एक के निष्पादन पर ध्यान केंद्रित करें, तो हम नीचे दिखाए गए अनुसार फ़ंक्शन का उपयोग करते हैं।

p1.join ()

P2.join ()

एक बार जब आप इस सिंटैक्स को इनपुट करते हैं, तो दुभाषिया निष्पादन को समाप्त करने के लिए प्रोग्राम p1 की प्रतीक्षा करेगा और फिर प्रोग्राम P2 पर आगे बढ़ेगा।

इस अवधारणा को और समझने के लिए, नीचे दिए गए पायथन में मल्टीप्रोसेसिंग के लिए एक और उदाहरण देखें।

उदाहरण 2

# इंपोर्टिंग मल्टीप्रोसेसिंग मॉड्यूल इंपोर्ट मल्टीप्रोसेसिंग इम्पोर्ट अस डेफ वर्कर 1 (): # प्रिंटिंग प्रोसेस आईडी प्रिंट ('आईडी ऑफ प्रॉसेस रनिंग वर्कर 1: {}'। format (os.getpid ())) def कार्यकर्ता2 (): # प्रिंटिंग प्रोसेस आईडी प्रिंट। ('आईडी की प्रक्रिया चल रही वर्कर 2: {}'। फॉर्मेट (os.getpid ())) यदि __name__ == '' __main__ ': # प्रिंटिंग मेन प्रोग्राम प्रोसेस आईडी प्रिंट (' मुख्य प्रक्रिया की आईडी: {} ') (ओएस) .getpid ())) # बनाने की प्रक्रिया p1 = multiprocessing.Process (लक्ष्य = कार्यकर्ता 1) पी 2 = मल्टीप्रोसेसिंग।प्रोसेस (लक्ष्य = कार्यकर्ता 2) # शुरुआती प्रक्रियाएं p1.start () P2.start () # प्रक्रिया आईडी प्रिंट ('आईडी की आईडी) प्रक्रिया p1: {} '। format (p1.pid)) प्रिंट (' ID की प्रक्रिया P2: {} '। format (P2.pid)) # प्रतीक्षा करें जब तक कि प्रक्रियाएं समाप्त नहीं हो जाती हैं p1.join () P2.join () # दोनों प्रक्रियाएं समाप्त हो गईं ('दोनों प्रक्रियाएं समाप्त हो गई निष्पादन!') # जांचें कि क्या प्रक्रियाएं जीवित हैं ('प्रक्रिया p1 जीवित है) {{} '। स्वरूप (p1.is_alive ()) प्रिंट (' प्रक्रिया P2 जीवित है: {} '.format (P2.is_alive ()))

आउटपुट

मुख्य प्रक्रिया की आईडी: 18938

प्रक्रिया चल रहे कार्यकर्ता की आईडी 1: 18939

प्रक्रिया चल रहे कार्यकर्ता 2 की आईडी: 18940

ओवरराइड बनाम ओवरलोड c ++

प्रक्रिया पी 1 की आईडी: 18939

प्रक्रिया 2 की आईडी: 18940

दोनों प्रक्रियाओं का निष्पादन समाप्त!

प्रक्रिया p1 जीवित है: गलत

प्रक्रिया P2 जीवित है: गलत

उपरोक्त कार्यक्रम में ध्यान दें कि पी 1 और पी 2 दोनों प्रक्रियाएं अपनी व्यक्तिगत यादों से स्वतंत्र रूप से चलती हैं। जैसे ही दोनों ने निष्पादन समाप्त कर दिया, कार्यक्रम समाप्त हो गया।

यह हमें पायथन में मल्टीप्रोसेसिंग पर इस लेख के अंत में लाता है

अपने विभिन्न अनुप्रयोगों के साथ अजगर पर गहराई से ज्ञान प्राप्त करने के लिए, आप कर सकते हैं 24/7 समर्थन और आजीवन पहुंच के साथ लाइव ऑनलाइन प्रशिक्षण के लिए।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? उन्हें लेख के टिप्पणी अनुभाग में उल्लेख करें और हम आपके पास वापस आ जाएंगे।