python 生产者消费者模式
时间: 2024-10-28 20:11:17 浏览: 15
python多进程下的生产者和消费者模型
生产者消费者模式是一种经典的并发处理模型,常用于解决进程间通信的问题。在这个模式中,有两个角色:
1. **生产者**:负责生成数据或任务,并将其放入一个公共的数据结构(如队列或缓冲区)中。生产者通常独立于消费者工作,不会立即检查数据是否已被消费。
2. **消费者**:从公共数据结构中取出并处理数据。当数据可用时,消费者会消耗它们,然后继续等待新的数据。
Python中可以使用内置的`queue`模块(旧版本称为`Queue`)来实现这个模式,通过`Queue.Queue()`创建一个队列。生产者使用`put()`方法将元素添加到队列,而消费者使用`get()`方法获取队列中的元素。这种方式保证了线程安全性和同步。
以下是一个简单的例子:
```python
import queue
class Producer:
def __init__(self, queue):
self.queue = queue
def produce(self):
for _ in range(5):
item = "Produced item"
print(f"Producer produced: {item}")
self.queue.put(item)
class Consumer:
def __init__(self, queue):
self.queue = queue
def consume(self):
while True:
item = self.queue.get()
if item is None:
break
print(f"Consumer consumed: {item}")
# 创建队列
queue = queue.Queue()
# 创建生产者和消费者实例
producer = Producer(queue)
consumer = Consumer(queue)
# 启动两个线程
producer_thread = threading.Thread(target=producer.produce)
consumer_thread = threading.Thread(target=consumer.consume)
producer_thread.start()
consumer_thread.start()
# 等待生产者完成
producer_thread.join()
# 消费者知道生产者已完成,所以在循环结束后添加None来结束消费
queue.put(None)
consumer_thread.join()
print("All done.")
```
阅读全文