.. 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
^^^^^^^^^^^^^
.. autoclass:: PriorityQueue
:members:
- .. 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
^^^^^^^^^
.. autoclass:: LifoQueue
:members:
- .. 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
----------
"""Coordinate producer and consumer coroutines.
If maxsize is 0 (the default) the queue size is unbounded.
+
+ .. 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
"""
def __init__(self, maxsize=0):
if maxsize is None:
"""A `.Queue` that retrieves entries in priority order, lowest first.
Entries are typically tuples like ``(priority number, data)``.
+
+ .. 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')
"""
def _init(self):
self._queue = []
class LifoQueue(Queue):
- """A `.Queue` that retrieves the most recently put items first."""
+ """A `.Queue` that retrieves the most recently put items first.
+
+ .. 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
+ """
def _init(self):
self._queue = []