Queue मॉड्यूल आपको एक नया क्यू ऑब्जेक्ट बनाने की अनुमति देता है जो आइटम्स की एक विशिष्ट संख्या धारण कर सकता है। क्यू को नियंत्रित करने के लिए निम्नलिखित मेथड्स हैं −
- get() − get() क्यू से एक आइटम को हटाता है और लौटाता है।
- put() − put क्यू में आइटम जोड़ता है।
- qsize() − qsize() वर्तमान में क्यू में मौजूद आइटम्स की संख्या लौटाता है।
- empty() − empty() True लौटाता है यदि क्यू खाली है; अन्यथा, False।
- full() − full() True लौटाता है यदि क्यू भरा हुआ है; अन्यथा, False।
उदाहरण
#!/usr/bin/python import Queue import threading import time exitFlag = 0 class myThread (threading.Thread): def __init__(self, threadID, name, q): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.q = q def run(self): print "Starting " + self.name process_data(self.name, self.q) print "Exiting " + self.name def process_data(threadName, q): while not exitFlag: queueLock.acquire() if not workQueue.empty(): data = q.get() queueLock.release() print "%s processing %s" % (threadName, data) else: queueLock.release() time.sleep(1) threadList = ["Thread-1", "Thread-2", "Thread-3"] nameList = ["One", "Two", "Three", "Four", "Five"] queueLock = threading.Lock() workQueue = Queue.Queue(10) threads = [] threadID = 1 # Create new threads for tName in threadList: thread = myThread(threadID, tName, workQueue) thread.start() threads.append(thread) threadID += 1 # Fill the queue queueLock.acquire() for word in nameList: workQueue.put(word) queueLock.release() # Wait for queue to empty while not workQueue.empty(): pass # Notify threads it's time to exit exitFlag = 1 # Wait for all threads to complete for t in threads: t.join() print "Exiting Main Thread"
जब उपरोक्त कोड निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है −
Starting Thread-1 Starting Thread-2 Starting Thread-3 Thread-1 processing One Thread-2 processing Two Thread-3 processing Three Thread-1 processing Four Thread-2 processing Five Exiting Thread-3 Exiting Thread-1 Exiting Thread-2 Exiting Main Thread