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('全部处理完')