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

Payathana Maltiprosesinga Katara



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

उदाहरण 1: पायथन में मल्टीप्रोसेसिंग कतार बनाने के लिए क्यू () विधि का उपयोग करना

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







'स्पाइडर' टूल का उपयोग पायथन स्क्रिप्ट को लागू करने के लिए किया जाता है, तो चलिए शुरू करते हैं। हमें पहले मल्टीप्रोसेसिंग मॉड्यूल को इम्पोर्ट करना होगा क्योंकि हम पाइथन मल्टीप्रोसेसिंग स्क्रिप्ट चला रहे हैं। हमने मल्टीप्रोसेसिंग मॉड्यूल को 'एम' के रूप में आयात करके ऐसा किया। 'M.queue ()' तकनीक का उपयोग करते हुए, हम मल्टीप्रोसेसिंग 'कतार ()' विधि का आह्वान करते हैं। यहां, हम 'कतार' नामक एक चर बनाते हैं और उसमें मल्टीप्रोसेसिंग 'कतार ()' विधि डालते हैं। जैसा कि हम जानते हैं कि कतार आइटम को 'फर्स्ट-इन, फ़र्स्ट-आउट' ऑर्डर में स्टोर करती है, जो आइटम हम पहले जोड़ते हैं उसे पहले हटा दिया जाता है। मल्टीप्रोसेसिंग कतार शुरू करने के बाद, हम स्क्रीन पर प्रदर्शित करने के लिए इसके तर्क के रूप में 'एक मल्टीप्रोसेसिंग कतार है' कथन को पास करते हुए 'प्रिंट ()' विधि को कॉल करते हैं। फिर, क्योंकि हम इस चर में निर्मित कतार को संग्रहीत करते हैं, हम 'प्रिंट ()' विधि के कोष्ठक में 'कतार' चर पारित करके कतार को प्रिंट करते हैं।




निम्न चित्र दिखाता है कि Python मल्टीप्रोसेसिंग कतार अब निर्मित हो गई है। प्रिंट स्टेटमेंट पहले दिखाया जाता है। निर्दिष्ट मेमोरी एड्रेस में इस मल्टीप्रोसेसिंग कतार के निर्माण के बाद, इसका उपयोग दो या दो से अधिक चल रही प्रक्रियाओं के बीच विशिष्ट डेटा को स्थानांतरित करने के लिए किया जा सकता है।







उदाहरण 2: पायथन में मल्टीप्रोसेसिंग कतार के आकार को निर्धारित करने के लिए 'क्यूसाइज ()' विधि का उपयोग करना

हम इस मामले में मल्टीप्रोसेसिंग कतार का आकार निर्धारित करते हैं। मल्टीप्रोसेसिंग कतार के आकार की गणना करने के लिए, हम 'qsize ()' विधि का उपयोग करते हैं। 'Qsize ()' फ़ंक्शन पायथन मल्टीप्रोसेसिंग कतार का वास्तविक आकार लौटाता है। दूसरे शब्दों में, यह विधि कतार में कुल वस्तुओं की संख्या प्रदान करती है।

आइए कोड चलाने से पहले पायथन मल्टीप्रोसेसिंग मॉड्यूल को 'एम' के रूप में आयात करके शुरू करें। फिर, 'm.queue ()' कमांड का उपयोग करते हुए, हम मल्टीप्रोसेसिंग 'कतार ()' फ़ंक्शन का आह्वान करते हैं और परिणाम को 'कतार' चर में डालते हैं। फिर, 'पुट ()' विधि का उपयोग करके, हम निम्नलिखित पंक्ति में कतार में आइटम जोड़ते हैं। इस विधि का उपयोग डेटा को कतार में जोड़ने के लिए किया जाता है। इसलिए, हम 'पुट ()' विधि के साथ 'कतार' कहते हैं और इसके कोष्ठक में इसके तत्व के रूप में पूर्णांक संख्या प्रदान करते हैं। 'पुट ()' फ़ंक्शन का उपयोग करके हम जो संख्याएँ जोड़ते हैं वे '1', '2', '3', '4', '5', '6,' और '7' हैं।



इसके अलावा, मल्टीप्रोसेसिंग कतार के आकार को प्राप्त करने के लिए 'क्यू' का उपयोग करते हुए, हम मल्टीप्रोसेसिंग कतार के साथ 'qsize ()' कहते हैं। फिर, नवगठित 'परिणाम' चर में, हम 'qsize ()' विधि के परिणाम को सहेजते हैं। उसके बाद, हम 'प्रिंट ()' विधि को कॉल करते हैं और इसके पैरामीटर के रूप में 'मल्टीप्रोसेसिंग कतार का आकार है' कथन को पास करते हैं। अगला, हम 'परिणाम' चर को 'प्रिंट ()' फ़ंक्शन में कहते हैं क्योंकि इस चर में आकार सहेजा गया है।


आउटपुट छवि में प्रदर्शित आकार है। जैसा कि हम मल्टीप्रोसेसिंग कतार में सात तत्वों को जोड़ने के लिए 'पुट ()' फ़ंक्शन का उपयोग करते हैं और आकार निर्धारित करने के लिए 'qsize ()' फ़ंक्शन का उपयोग करते हैं, मल्टीप्रोसेसिंग कतार का आकार '7' प्रदर्शित होता है। इनपुट स्टेटमेंट 'मल्टीप्रोसेसिंग क्यू का आकार' आकार से पहले दिखाया गया है।

उदाहरण 3: पायथन मल्टीप्रोसेसिंग कतार में 'पुट ()' और 'गेट ()' विधि का उपयोग करना

इस उदाहरण में पायथन मल्टीप्रोसेसिंग कतार से 'पुट ()' और 'गेट ()' कतार विधियों का उपयोग किया जाता है। हम इस उदाहरण में दो यूज़र-डिफ़ाइंड फ़ंक्शन विकसित करते हैं। इस उदाहरण में, हम '5' यादृच्छिक पूर्णांक उत्पन्न करने वाली प्रक्रिया बनाने के लिए एक फ़ंक्शन को परिभाषित करते हैं। हम उन्हें कतार में जोड़ने के लिए 'पुट ()' विधि का भी उपयोग करते हैं। आइटम को कतार में रखने के लिए 'पुट ()' विधि का उपयोग किया जाता है। फिर, कतार से संख्याओं को पुनः प्राप्त करने और उनके मूल्यों को वापस करने के लिए, हम एक और फ़ंक्शन लिखते हैं और इसे प्रक्रिया के दौरान कॉल करते हैं। हम कतार से संख्याएँ प्राप्त करने के लिए 'प्राप्त ()' फ़ंक्शन का उपयोग करते हैं क्योंकि इस विधि का उपयोग कतार से डेटा को पुनः प्राप्त करने के लिए किया जाता है जिसे हम 'पुट ()' विधि का उपयोग करके सम्मिलित करते हैं।

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


हम एक फ़ंक्शन को परिभाषित करते हैं। फिर, चूंकि यह फ़ंक्शन उपयोगकर्ता-परिभाषित है, हम इसे 'फ़ंक्शन 1' नाम देते हैं और 'कतार' शब्द को इसके तर्क के रूप में पास करते हैं। इसके बाद, हम 'प्रिंट ()' फ़ंक्शन को 'बिल्डर: रनिंग', 'फ्लश' और ऑब्जेक्ट 'ट्रू' स्टेटमेंट पास करते हुए इनवॉइस करते हैं। पायथन के प्रिंट फ़ंक्शन में फ्लश नामक एक अनूठा विकल्प होता है जो उपयोगकर्ता को यह चुनने देता है कि इस आउटपुट को बफर करना है या नहीं। अगला कदम कार्य उत्पन्न करना है। ऐसा करने के लिए, हम 'for' का उपयोग करते हैं और वेरिएबल 'm' बनाते हैं और रेंज को '5' पर सेट करते हैं। फिर, अगली पंक्ति में, 'यादृच्छिक ()' का उपयोग करें और परिणाम को हमारे द्वारा बनाए गए चर में संग्रहीत करें जो 'मान' है। यह इंगित करता है कि फ़ंक्शन अब अपने पांच पुनरावृत्तियों को पूरा करता है, प्रत्येक पुनरावृत्ति के साथ 0 से 5 तक एक यादृच्छिक पूर्णांक बनाता है।

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


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


फिर, हम 'If-name = main_' का उपयोग करके मुख्य प्रक्रिया में प्रवेश करते हैं। हम 'कतार ()' विधि को कॉल करके और इसे 'कतार' चर में संग्रहीत करके एक कतार बनाते हैं। अगला, हम उपयोगकर्ता फ़ंक्शन 'फ़ंक्शन 2' को कॉल करके एक प्रक्रिया बनाते हैं। इसके लिए हम 'प्रक्रिया' वर्ग कहते हैं। इसके अंदर, हम प्रक्रिया में फ़ंक्शन को कॉल करने के लिए 'लक्ष्य = फ़ंक्शन 2' पास करते हैं, तर्क 'कतार' पास करते हैं, और इसे 'उपयोगकर्ता_प्रोसेस' चर में संग्रहीत करते हैं। प्रक्रिया फिर 'उपयोगकर्ता_ प्रक्रिया' चर के साथ 'प्रारंभ ()' विधि को कॉल करके शुरू होती है। हम फिर प्रक्रिया में 'फ़ंक्शन 1' को कॉल करने के लिए उसी प्रक्रिया को दोहराते हैं और इसे 'बिल्डर प्रक्रिया' चर में डालते हैं। फिर, हम निष्पादन के लिए प्रतीक्षा करने के लिए 'जॉइन ()' विधि के साथ प्रक्रियाओं को कॉल करते हैं।


अब जबकि यह प्रस्तुत किया गया है, आप आउटपुट में दोनों कार्यों के कथन देख सकते हैं। यह क्रमशः 'get ()' विधियों का उपयोग करके 'पुट ()' और 'get ()' का उपयोग करके जोड़े गए आइटम प्रदर्शित करता है।

निष्कर्ष

हमने इस लेख में Python मल्टीप्रोसेसिंग क्यू के बारे में सीखा। हमने दिए गए उदाहरणों का उपयोग किया। सबसे पहले, हमने बताया कि क्यू () फ़ंक्शन का उपयोग करके पायथन मल्टीप्रोसेसिंग में क्यू कैसे बनाया जाता है। फिर, हमने कतार का निर्धारण करने के लिए 'qsize ()' विधि का उपयोग किया। हमने कतार के पुट () और प्राप्त () विधियों का भी उपयोग किया। टाइम मॉड्यूल के स्लीप क्लास और रैंडम मॉड्यूल के रैंडम क्लास दोनों पर पिछले उदाहरण में चर्चा की गई थी।