python生产者与消费者
时间: 2023-10-16 21:07:16 浏览: 79
生产者和消费者模式是一种常用的并发编程模式,它解决了多个线程之间协作的问题,Python中可以通过队列来实现生产者和消费者模式。
下面是一个简单的示例代码:
```python
import queue
import threading
import time
# 队列最大长度
MAX_QUEUE_SIZE = 5
# 用于存储数据的队列
data_queue = queue.Queue(MAX_QUEUE_SIZE)
# 生产者线程
def producer():
while True:
# 模拟生产数据
data = time.time()
# 将数据放入队列
data_queue.put(data)
print(f"producer: {data}")
# 等待一定时间
time.sleep(1)
# 消费者线程
def consumer():
while True:
# 从队列中取出数据
data = data_queue.get()
print(f"consumer: {data}")
# 等待一定时间
time.sleep(2)
# 创建生产者和消费者线程
producer_thread = threading.Thread(target=producer)
consumer_thread = threading.Thread(target=consumer)
# 启动线程
producer_thread.start()
consumer_thread.start()
# 等待线程结束
producer_thread.join()
consumer_thread.join()
```
在这个示例中,我们创建了一个最大长度为5的队列,然后启动了一个生产者线程和一个消费者线程。生产者线程会不断地往队列中添加数据,消费者线程则会从队列中取出数据。当队列已满时,生产者线程会被阻塞,直到队列中有空闲位置。当队列为空时,消费者线程会被阻塞,直到队列中有数据。通过队列,我们可以实现线程之间的同步和协作,避免了多线程访问共享数据时的竞态条件和死锁问题。
阅读全文