Queue 线程安全队列

44.8 Queue 线程安全队列

queue.Queue 内部有锁,producer 放、consumer 取,经典生产者-消费者模型。

put 放元素,get 取元素;task_done / join 跟踪任务完成。

生产者消费者

# ========================================
# 示例:Queue 传递任务
# 说明:主线程生产,子线程消费
# ========================================
import threading
import queue
import time

q = queue.Queue()

def consumer():
    while True:
        item = q.get()  # 队列空则阻塞
        if item is None:  # 结束信号
            break
        print('处理', item)
        time.sleep(0.2)
        q.task_done()

threading.Thread(target=consumer, daemon=True).start()
for i in range(5):
    q.put(f'任务{i}')
    print('投入', f'任务{i}')
q.join()  # 等队列全部 task_done
q.put(None)  # 通知消费者退出
print('全部处理完')