Python Glossary Русский

all Python 3queueterm

queue.Queue

queues

A thread-safe FIFO queue for passing data between threads, with blocking put() and get().

Syntax

q = queue.Queue(maxsize=0); q.put(item); q.get(block=True, timeout=None); q.task_done(); q.join()

get() with no arguments waits forever on an empty queue: in single-threaded code that is a hang, not an error. Within one thread collections.deque is faster, and for coroutines use asyncio.Queue. join() waits until task_done() has been called for every item taken; a forgotten task_done() also means waiting forever.

Examples

import queue, threading
q = queue.Queue()
def worker():
    while (item := q.get()) is not None:
        print('got', item)
        q.task_done()
    q.task_done()
t = threading.Thread(target=worker)
t.start()
for i in range(2):
    q.put(i)
q.put(None)
q.join()
# → got 0 / got 1
import queue
q = queue.Queue()
try:
    q.get(timeout=0.1)
except queue.Empty:
    print('пусто')  # → пусто

See also

Common errors

Open in the full glossarydocs.python.orgReport an inaccuracy