Document queues.
This commit is contained in:
parent
3e4a735f15
commit
d12883805a
107
docs/queues.rst
107
docs/queues.rst
|
@ -3,5 +3,112 @@
|
||||||
|
|
||||||
.. versionadded:: 4.2
|
.. versionadded:: 4.2
|
||||||
|
|
||||||
|
.. testsetup::
|
||||||
|
|
||||||
|
from tornado import ioloop, gen, queues
|
||||||
|
io_loop = ioloop.IOLoop.current()
|
||||||
|
|
||||||
.. automodule:: tornado.queues
|
.. automodule:: tornado.queues
|
||||||
|
|
||||||
|
Classes
|
||||||
|
-------
|
||||||
|
|
||||||
|
Queue
|
||||||
|
^^^^^
|
||||||
|
.. autoclass:: Queue
|
||||||
:members:
|
: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
|
||||||
|
|
Loading…
Reference in New Issue