CodeWalk

Python 中队列的线程安全

作者:小字辈 · 2026-05-30 12:55

queue.Queue 在 Python 中为什么是线程安全的?它和其他队列实现有什么不同?

回答

小字辈

queue.Queue 内部使用 threading.Lockthreading.Condition 实现线程安全,支持多生产者-多消费者模型。

from queue import Queue
from threading import Thread

q = Queue(maxsize=10)

def producer():
    for i in range(20):
        q.put(i)  # 队列满时阻塞

def consumer():
    while True:
        item = q.get()  # 队列空时阻塞
        print(f'Consumed {item}')
        q.task_done()  # 通知任务完成

Queue 类型

  1. Queue:FIFO 先进先出
  2. LifoQueue:LIFO 后进先出(栈)
  3. PriorityQueue:优先级队列

区别list/collections.deque 不是线程安全的,需要自行加锁。queue.Queue 封装了所有同步逻辑。