summaryrefslogtreecommitdiffstats
path: root/Doc/library/asyncio-queue.rst
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-02-25 12:55:43 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2015-02-25 12:55:43 (GMT)
commit615a58eaabde8df2db51b435d712733bc9ce5a86 (patch)
tree5f1d44ae8a4091b0bba2977759fea725da9e964e /Doc/library/asyncio-queue.rst
parent7e91af3a91ad6fee49c2ed75309552a6b5afea52 (diff)
downloadcpython-615a58eaabde8df2db51b435d712733bc9ce5a86.zip
cpython-615a58eaabde8df2db51b435d712733bc9ce5a86.tar.gz
cpython-615a58eaabde8df2db51b435d712733bc9ce5a86.tar.bz2
asyncio doc: move queues to a new page
Diffstat (limited to 'Doc/library/asyncio-queue.rst')
-rw-r--r--Doc/library/asyncio-queue.rst167
1 files changed, 167 insertions, 0 deletions
diff --git a/Doc/library/asyncio-queue.rst b/Doc/library/asyncio-queue.rst
new file mode 100644
index 0000000..19957a0
--- /dev/null
+++ b/Doc/library/asyncio-queue.rst
@@ -0,0 +1,167 @@
+.. currentmodule:: asyncio
+
+Queues
+======
+
+Queues:
+
+* :class:`Queue`
+* :class:`PriorityQueue`
+* :class:`LifoQueue`
+* :class:`JoinableQueue`
+
+asyncio queue API was designed to be close to classes of the :mod:`queue`
+module (:class:`~queue.Queue`, :class:`~queue.PriorityQueue`,
+:class:`~queue.LifoQueue`), but it has no *timeout* parameter. The
+:func:`asyncio.wait_for` function can be used to cancel a task after a timeout.
+
+Queue
+-----
+
+.. class:: Queue(maxsize=0, \*, loop=None)
+
+ A queue, useful for coordinating producer and consumer coroutines.
+
+ If *maxsize* is less than or equal to zero, the queue size is infinite. If
+ it is an integer greater than ``0``, then ``yield from put()`` will block
+ when the queue reaches *maxsize*, until an item is removed by :meth:`get`.
+
+ Unlike the standard library :mod:`queue`, you can reliably know this Queue's
+ size with :meth:`qsize`, since your single-threaded asyncio application won't
+ be interrupted between calling :meth:`qsize` and doing an operation on the
+ Queue.
+
+ .. versionchanged:: 3.4.3
+ New :meth:`join` and :meth:`task_done` methods.
+
+ .. method:: empty()
+
+ Return ``True`` if the queue is empty, ``False`` otherwise.
+
+ .. method:: full()
+
+ Return ``True`` if there are :attr:`maxsize` items in the queue.
+
+ .. note::
+
+ If the Queue was initialized with ``maxsize=0`` (the default), then
+ :meth:`full()` is never ``True``.
+
+ .. coroutinemethod:: get()
+
+ Remove and return an item from the queue. If queue is empty, wait until
+ an item is available.
+
+ This method is a :ref:`coroutine <coroutine>`.
+
+ .. seealso::
+
+ The :meth:`empty` method.
+
+ .. method:: get_nowait()
+
+ Remove and return an item from the queue.
+
+ Return an item if one is immediately available, else raise
+ :exc:`QueueEmpty`.
+
+ .. coroutinemethod:: 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 the
+ queue. The count goes down whenever a consumer thread calls
+ :meth:`task_done` to indicate that the item was retrieved and all work on
+ it is complete. When the count of unfinished tasks drops to zero,
+ :meth:`join` unblocks.
+
+ This method is a :ref:`coroutine <coroutine>`.
+
+ .. versionadded:: 3.4.3
+
+ .. coroutinemethod:: put(item)
+
+ Put an item into the queue. If the queue is full, wait until a free slot
+ is available before adding item.
+
+ This method is a :ref:`coroutine <coroutine>`.
+
+ .. seealso::
+
+ The :meth:`full` method.
+
+ .. method:: put_nowait(item)
+
+ Put an item into the queue without blocking.
+
+ If no free slot is immediately available, raise :exc:`QueueFull`.
+
+ .. method:: qsize()
+
+ Number of items in the queue.
+
+ .. method:: task_done()
+
+ Indicate that a formerly enqueued task is complete.
+
+ Used by queue consumers. For each :meth:`~Queue.get` used to fetch a task, a
+ subsequent call to :meth:`task_done` tells the queue that the processing
+ on the task is complete.
+
+ If a :meth:`join` is currently blocking, it will resume when all items
+ have been processed (meaning that a :meth:`task_done` call was received
+ for every item that had been :meth:`~Queue.put` into the queue).
+
+ Raises :exc:`ValueError` if called more times than there were items
+ placed in the queue.
+
+ .. versionadded:: 3.4.3
+
+ .. attribute:: maxsize
+
+ Number of items allowed in the queue.
+
+
+PriorityQueue
+-------------
+
+.. class:: PriorityQueue
+
+ A subclass of :class:`Queue`; retrieves entries in priority order (lowest
+ first).
+
+ Entries are typically tuples of the form: (priority number, data).
+
+
+LifoQueue
+---------
+
+.. class:: LifoQueue
+
+ A subclass of :class:`Queue` that retrieves most recently added entries
+ first.
+
+
+JoinableQueue
+^^^^^^^^^^^^^
+
+.. class:: JoinableQueue
+
+ Deprecated alias for :class:`Queue`.
+
+ .. deprecated:: 3.4.3
+
+
+Exceptions
+^^^^^^^^^^
+
+.. exception:: QueueEmpty
+
+ Exception raised when the :meth:`~Queue.get_nowait` method is called on a
+ :class:`Queue` object which is empty.
+
+
+.. exception:: QueueFull
+
+ Exception raised when the :meth:`~Queue.put_nowait` method is called on a
+ :class:`Queue` object which is full.