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