Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

रूबी में क्यू मास्टर करें: कुशल कार्य प्रबंधन के लिए व्यावहारिक मार्गदर्शिका

एक क्यू एक प्रतीक्षा सूची की तरह है।

कल्पना करें कि आप नवीनतम एप्पल उत्पाद खरीदने, मूवी टिकट प्राप्त करने, या अपने किराने का भुगतान करने के लिए लाइन में इंतजार कर रहे हैं।

ये क्यू हैं!

आप अपने रूबी प्रोजेक्ट्स में क्यू का उपयोग कर सकते हैं।

कैसे?

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

आप इसे लागू कर सकते हैं:

  • एक वास्तविक-विश्व क्यू मॉडल करें
  • ब्रेडथ-फर्स्ट सर्च (BFS) जैसे एल्गोरिदम लागू करें
  • साझा संसाधन तक पहुंच को नियंत्रित करें, जैसे CPU, डिस्क, प्रिंटर, आदि।

अब...

आइए कुछ कोड देखें!

रूबी में क्यू कैसे कार्यान्वित करें

एक सरणी Queue की तरह व्यवहार कर सकती है यदि आप सही मेथड्स का उपयोग करते हैं।

ये मेथड्स हैं:

  • unshift (या रूबी 2.5+ के साथ prepend)
  • pop

जब आप unshift करते हैं, तो आप क्यू में एक आइटम जोड़ रहे हैं।

उदाहरण:

 queue = [] queue.unshift "apple" queue.unshift "orange" queue.unshift "banana" # ["banana", "orange", "apple"] 

जब आप pop करते हैं, तो आप क्यू से अंतिम आइटम हटाते हैं।

यह अगला आइटम है जिसे प्रोसेस किया जाना चाहिए।

उदाहरण:

 queue.pop # "apple" queue.pop # "orange" 

आप अंतिम आइटम को देख सकते हैं, यह देखने के लिए कि "अगला कौन है" बिना इस आइटम को हटाए।

उदाहरण:

 queue[-1] # "banana" 

इस ऑपरेशन को peek कहा जाता है।

रूबी कंकरेंट क्यू

रूबी में एक उचित थ्रेड-सेफ, ब्लॉकिंग, Queue क्लास है।

आप इस क्यू का उपयोग मल्टी-थ्रेडेड प्रोग्राम में काम को समन्वयित करने के लिए कर सकते हैं।

उदाहरण:

 que = Queue.new que << 1 que << 2 que << 3 

आप pop के साथ इस क्यू से एक आइटम प्राप्त कर सकते हैं:

 que.pop # 1 que.pop # 2 

यदि क्यू खाली है, तो pop कॉल करने से आपका वर्तमान थ्रेड स्लीप हो जाएगा और क्यू में कुछ जोड़े जाने तक प्रतीक्षा करेगा।

यही "ब्लॉक" का अर्थ है।

आप true को pop में पास करके ब्लॉकिंग से बच सकते हैं:

 que.pop(true) 

यह क्यू खाली होने पर ThreadError: queue empty एक्सेप्शन उठाएगा।

साइज़्ड क्यू का उपयोग कैसे करें

एक साइज़्ड क्यू नियमित क्यू के समान है लेकिन आकार सीमा के साथ।

उदाहरण:

 que = SizedQueue.new(5) 

जब क्यू भर जाता है, तो push ( << के समान) ऑपरेशन वर्तमान थ्रेड को तब तक निलंबित कर देगा जब तक क्यू से एक आइटम नहीं लिया जाता।

उदाहरण:

 que.push(:bacon) 

आप true को आर्ग्युमेंट के रूप में पास करके इसके बजाय एक्सेप्शन उठाना चुन सकते हैं:

 que.push(:bacon, true) 

यह ThreadError: queue full उठाता है।

वीडियो ट्यूटोरियल

सारांश

आपने रूबी क्यू के बारे में सीखा!

आप क्यू का उपयोग तब कर सकते हैं जब आपको काम को FIFO (फर्स्ट-इन-फर्स्ट-आउट) क्रम में प्रोसेस करने की आवश्यकता हो। क्यू को लागू करने के दो तरीके हैं, सरणी का उपयोग करके, या Queue क्लास का उपयोग करके।

पढ़ने के लिए धन्यवाद। 🙂


  1. रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं

    मैट्रिक्स एक 2D (2-डायमेंशनल) ऐरे है जिसका उपयोग स्प्रेडशीट जैसे डेटा को स्टोर और काम करने के लिए किया जा सकता है। इनका उपयोग किया जा सकता है: टेबल गेम में बोर्ड को दर्शाना (शतरंज, चेकर्स, आदि) आंकड़े और डेटा विश्लेषण प्लॉट्स और ग्राफ़ उत्पन्न करना क्योंकि यह एक शक्तिशाली डेटा संरचना है इसलिए इसका

  1. Ruby में Alias कीवर्ड का उपयोग करके मेथड एलियास बनाना Ruby में Alias कीवर्ड का उपयोग करके मेथड एलियास बनाना

    Ruby में किसी मेथड को वैकल्पिक नाम देने के दो तरीके हैं: alias (कीवर्ड) alias_method चूंकि ये दोनों थोड़े अलग तरीके से एक ही काम करते हैं, इसलिए यह विषय भ्रमित करने वाला हो सकता है। यह छवि अंतरों का सारांश है: आइए इन अंतरों को विस्तार से समझते हैं ताकि आपको ठोस समझ मिल सके! alias कीवर्ड पहला है a

  1. रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स

    रूबी में स्ट्रक्ट क्या है? एक स्ट्रक्ट एक बिल्ट-इन रूबी क्लास है, इसका उपयोग वैल्यू ऑब्जेक्ट्स उत्पन्न करने वाली नई क्लासेस बनाने के लिए किया जाता है। एक वैल्यू ऑब्जेक्ट संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए उपयोग किया जाता है। यहां एक उदाहरण है: दो निर्देशांकों (x और y) के साथ एक Point।