18.5.8.Queues¶
Source code:Lib/asyncio/queues.py
Queues:
asyncio queue API was designed to be close to classes of thequeuemodule (Queue,PriorityQueue,LifoQueue), but it has notimeout parameter. Theasyncio.wait_for() function can be used to cancel a task after a timeout.
18.5.8.1.Queue¶
- class
asyncio.Queue(maxsize=0,*,loop=None)¶ A queue, useful for coordinating producer and consumer coroutines.
Ifmaxsize is less than or equal to zero, the queue size is infinite. Ifit is an integer greater than
0, thenyieldfromput()will blockwhen the queue reachesmaxsize, until an item is removed byget().Unlike the standard library
queue, you can reliably know this Queue’ssize withqsize(), since your single-threaded asyncio application won’tbe interrupted between callingqsize()and doing an operation on theQueue.This class isnot thread safe.
Changed in version 3.4.4:New
join()andtask_done()methods.empty()¶Return
Trueif the queue is empty,Falseotherwise.
full()¶Return
Trueif there aremaxsizeitems in the queue.Note
If the Queue was initialized with
maxsize=0(the default), thenfull()is neverTrue.
- coroutine
get()¶ Remove and return an item from the queue. If queue is empty, wait untilan item is available.
This method is acoroutine.
See also
The
empty()method.
get_nowait()¶Remove and return an item from the queue.
Return an item if one is immediately available, else raise
QueueEmpty.
- coroutine
join()¶ Block until all items in the queue have been gotten and processed.
The count of unfinished tasks goes up whenever an item is added to thequeue. The count goes down whenever a consumer thread calls
task_done()to indicate that the item was retrieved and all work onit is complete. When the count of unfinished tasks drops to zero,join()unblocks.This method is acoroutine.
New in version 3.4.4.
- coroutine
put(item)¶ Put an item into the queue. If the queue is full, wait until a free slotis available before adding item.
This method is acoroutine.
See also
The
full()method.
put_nowait(item)¶Put an item into the queue without blocking.
If no free slot is immediately available, raise
QueueFull.
qsize()¶Number of items in the queue.
task_done()¶Indicate that a formerly enqueued task is complete.
Used by queue consumers. For each
get()used to fetch a task, asubsequent call totask_done()tells the queue that the processingon the task is complete.If a
join()is currently blocking, it will resume when all itemshave been processed (meaning that atask_done()call was receivedfor every item that had beenput()into the queue).Raises
ValueErrorif called more times than there were itemsplaced in the queue.New in version 3.4.4.
maxsize¶Number of items allowed in the queue.
18.5.8.2.PriorityQueue¶
18.5.8.3.LifoQueue¶
18.5.8.3.1.Exceptions¶
- exception
asyncio.QueueEmpty¶ Exception raised when the
get_nowait()method is called on aQueueobject which is empty.
- exception
asyncio.QueueFull¶ Exception raised when the
put_nowait()method is called on aQueueobject which is full.
