python 生产者消费者模型
时间: 2023-10-06 20:11:52 浏览: 268
生产者消费者模型是一种经典的并发编程模型,用于解决生产者和消费者之间的数据交换问题。在 Python 中,可以使用多线程或多进程实现生产者消费者模型。
下面是一个使用 Python 多线程实现生产者消费者模型的示例代码:
```python
import threading
import queue
import time
# 定义一个线程安全的队列
q = queue.Queue(maxsize=10)
# 定义一个生产者线程
class Producer(threading.Thread):
def run(self):
while True:
# 如果队列未满,则向队列中添加数据
if not q.full():
item = time.strftime('%H:%M:%S', time.localtime())
q.put(item)
print(f'生产者 {self.name} 生产了 {item}')
time.sleep(1)
# 定义一个消费者线程
class Consumer(threading.Thread):
def run(self):
while True:
# 如果队列不为空,则从队列中取出数据
if not q.empty():
item = q.get()
print(f'消费者 {self.name} 消费了 {item}')
time.sleep(2)
if __name__ == '__main__':
# 创建两个生产者线程和三个消费者线程
producers = [Producer() for i in range(2)]
consumers = [Consumer() for i in range(3)]
# 启动所有线程
for p in producers:
p.start()
for c in consumers:
c.start()
# 等待所有线程结束
for p in producers:
p.join()
for c in consumers:
c.join()
```
在上面的代码中,我们定义了一个线程安全的队列 `q`,并定义了一个生产者线程 `Producer` 和一个消费者线程 `Consumer`。生产者线程不断向队列中添加数据,消费者线程不断从队列中取出数据。我们创建了两个生产者线程和三个消费者线程,并启动所有线程。最后,我们使用 `join()` 方法等待所有线程执行完毕。运行上面的代码,可以看到生产者不断生产数据,消费者不断消费数据,实现了生产者消费者模型。
阅读全文