Skip to content

Commit

Permalink
Merge d128838 into 3e4a735
Browse files Browse the repository at this point in the history
  • Loading branch information
ajdavis committed Apr 4, 2015
2 parents 3e4a735 + d128838 commit 3ba9305
Showing 1 changed file with 107 additions and 0 deletions.
107 changes: 107 additions & 0 deletions docs/queues.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,112 @@

.. versionadded:: 4.2

.. testsetup::

from tornado import ioloop, gen, queues
io_loop = ioloop.IOLoop.current()

.. automodule:: tornado.queues

Classes
-------

Queue
^^^^^
.. autoclass:: Queue
:members:

.. testcode::

q = queues.Queue(maxsize=2)

@gen.coroutine
def consumer():
while True:
item = yield q.get()
try:
print('Doing work on %s' % item)
yield gen.sleep(0.01)
finally:
q.task_done()

@gen.coroutine
def producer():
for item in range(5):
yield q.put(item)
print('Put %s' % item)

@gen.coroutine
def main():
consumer() # Start consumer.
yield producer() # Wait for producer to put all tasks.
yield q.join() # Wait for consumer to finish all tasks.
print('Done')

io_loop.run_sync(main)

.. testoutput::

Put 0
Put 1
Put 2
Doing work on 0
Doing work on 1
Put 3
Doing work on 2
Put 4
Doing work on 3
Doing work on 4
Done


PriorityQueue
^^^^^^^^^^^^^

.. testcode::

q = queues.PriorityQueue()
q.put((1, 'medium-priority item'))
q.put((0, 'high-priority item'))
q.put((10, 'low-priority item'))

print(q.get_nowait())
print(q.get_nowait())
print(q.get_nowait())

.. testoutput::

(0, 'high-priority item')
(1, 'medium-priority item')
(10, 'low-priority item')

LifoQueue
^^^^^^^^^

.. testcode::

q = queues.LifoQueue()
q.put(3)
q.put(2)
q.put(1)

print(q.get_nowait())
print(q.get_nowait())
print(q.get_nowait())

.. testoutput::

1
2
3

Exceptions
----------

QueueEmpty
^^^^^^^^^^
.. autoclass:: QueueEmpty

QueueFull
^^^^^^^^^
.. autoclass:: QueueFull

0 comments on commit 3ba9305

Please sign in to comment.