Method Name:
get
Method Signature:
get([block[, timeout]])
Return Value:
NoneType
Parameters:
block |
|
|
|
timeout |
This parameter tells how many seconds to wait, while trying to read from an empty Queue. If the get is not successful till the expiry of timeout seconds, an exception queue.Empty is raised. |
Method Overview:
- The method get() reads and removes a Python object from a Queue instance.
- Once an object is removed from the Queue using get() it is not available in the Queue.
- Through the parameters block and timeout how long the get() can wait before a successful read of an item from the Queue.
Example:
import multiprocessing import queue import time
QUEUE_LIMIT = 6
# Function for consumer process def consumerFunction(messageQueue): count = 0 while count < QUEUE_LIMIT: try: count = count + 1 print("Consumer read:%s"%messageQueue.get(timeout=2)) except queue.Empty: print("Consumer:Timeout reading from the Queue")
if __name__ == "__main__": multiprocessing.set_start_method = "fork";
messageQueue = multiprocessing.Queue(maxsize=QUEUE_LIMIT) consumerProcess = multiprocessing.Process(target=consumerFunction, args=(messageQueue,))
# Start the consumer (Consumer starts first...look at the timeout for get() in consumer function) consumerProcess.start()
# Parent process acting as the producer of messages for i in range(1, QUEUE_LIMIT+1): messageQueue.put("Message%d"%i) print("Producer added:Message%d"%i) time.sleep(1)
# Wait for the consumer process to complete consumerProcess.join() |
Output:
Producer added:Message1 Consumer read:Message1 Producer added:Message2 Consumer read:Message2 Producer added:Message3 Consumer read:Message3 Producer added:Message4 Consumer read:Message4 Producer added:Message5 Consumer read:Message5 Producer added:Message6 Consumer read:Message6 |