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

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

परिचय...

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

नोट :यह चर्चा मानती है कि आप पहले से ही एक कतार की सामान्य प्रकृति को समझते हैं। यदि आप नहीं करते हैं, तो जारी रखने से पहले आप कुछ संदर्भ पढ़ना चाहेंगे।

1. आइए एक बुनियादी फीफो कतार लागू करें।

import queue
fifo = queue.Queue()

# put numbers into queue
for i in range(5):
fifo.put(i)

# if not empty get the numbers from queue
print(f"Ouput \n")
while not fifo.empty():
print(f" {fifo.get()} ")

आउटपुट

0
1
2
3
4

2. उपरोक्त उदाहरण एकल धागे का उपयोग यह दिखाने के लिए करता है कि कतार से तत्वों को उसी क्रम में कैसे हटाया जाता है जिसमें उन्हें डाला जाता है।

3. आइए हम एक बुनियादी LIFO कतार लागू करें।

import queue
lifo = queue.LifoQueue()

# put numbers into queue
for i in range(5):
lifo.put(i)

print(f"Ouput \n")
# if not empty get the numbers from queue
while not lifo.empty():
print(f" {lifo.get()} ")

आउटपुट

4
3
2
1
0

4. ऊपर दिए गए उदाहरण से पता चलता है कि हाल ही में कतार में डाला गया get द्वारा हटा दिया गया है।

5. अंत में, हम देखेंगे कि प्राथमिकता कतार को कैसे लागू किया जाए।

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

import queue
import threading

# Class to get the priority and description and validate the priority
class Job:
def __init__(self, priority, description):
self.priority = priority
self.description = description
print('New job:', description)
return

def __eq__(self, other):
try:
return self.priority == other.priority
except AttributeError:
return NotImplemented

def __lt__(self, other):
try:
return self.priority < other.priority
except AttributeError:
return NotImplemented

# create a priority queue and define the priority
q = queue.PriorityQueue()
q.put(Job(90, 'Developer-Print job'))
q.put(Job(2, 'Business-Report job'))
q.put(Job(1, 'Business-Critical Job'))

# process the job
def process_job(q):
while True:
next_job = q.get()
print(f" *** Now, Processing the job - {next_job.description}")
q.task_done()

# define the threads
workers = [
threading.Thread(target=process_job, args=(q,)),
threading.Thread(target=process_job, args=(q,)), ]

# call the threads and join them.
for w in workers:
w.setDaemon(True)
w.start()

q.join()

आउटपुट

job: Developer-Print job
New job: Business-Report job
New job: Business-Critical Job

आउटपुट

*** Now, Processing the job - Business-Critical Job
*** Now, Processing the job - Business-Report job
*** Now, Processing the job - Developer-Print job

6. इस उदाहरण में नौकरियों का उपभोग करने वाले कई धागे हैं, जिन्हें समय पर कतार में वस्तुओं की प्राथमिकता के आधार पर संसाधित किया जाता है get() कहा जाता था। प्रसंस्करण का क्रम व्यवसाय की गंभीरता पर आधारित होता है, भले ही उन्हें किस क्रम में जोड़ा गया हो।


  1. पायथन में थ्रेड्स के साथ Concurrency को कैसे कार्यान्वित करें?

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

  1. पायथन में strStr () लागू करें

    मान लीजिए कि हमारे पास दो तार हैं str और sub_str। हमें str में sub_str की पहली घटना का पता लगाना है। तो अगर स्ट्रिंग str helloworld है, और सबस्ट्रिंग lo है, तो परिणाम 3 होगा। यह सी में स्ट्रस्ट्र () फ़ंक्शन का उपयोग करके किया जा सकता है। हमें सी में स्ट्रस्ट्र () के समान एक और फ़ंक्शन डिज़ाइन करना

  1. पायथन में उपयोगकर्ता परिभाषित अपवाद को कैसे कार्यान्वित करें?

    हम Python में एक नया अपवाद वर्ग बनाकर उपयोगकर्ता-परिभाषित या कस्टम अपवाद बनाते हैं। विचार अपवाद वर्ग से कस्टम अपवाद वर्ग प्राप्त करना है। अधिकांश अंतर्निर्मित अपवाद अपने अपवादों को लागू करने के लिए एक ही विचार का उपयोग करते हैं। दिए गए कोड में, आपने एक उपयोगकर्ता-परिभाषित अपवाद वर्ग, कस्टम एक्सेप्श