生产者:生产/制造东西的
消费者:消费/处理东西的
该模型除了上述两个之外还需要一个媒介
import threading
import queue
import time
import random
# 创建一个队列
q = queue.Queue()
# 生产者线程
def producer():
while True:
item = random.randint(1, 100) # 生成一个1到100之间的随机数作为生产的数据
print(f"生产者生产了 {item}")
q.put(item) # 将数据放入队列
time.sleep(random.random()) # 随机等待一段时间
# 消费者线程
def consumer():
while True:
item = q.get() # 从队列中获取数据
if item is None: # 如果获取到None,表示生产者已经停止生产,消费者也停止消费
break
print(f"消费者消费了 {item}")
time.sleep(random.random()) # 随机等待一段时间
q.task_done() # 标记任务已完成
# 创建生产者线程
producer_thread = threading.Thread(target=producer)
producer_thread.start()
# 创建消费者线程
consumer_thread = threading.Thread(target=consumer)
consumer_thread.start()
# 等待队列中的所有任务完成
q.join()
# 停止生产者线程
q.put(None)
producer_thread.join()
# 停止消费者线程
consumer_thread.join()
print("程序结束")