python生产者消费者线程
时间: 2023-12-13 09:34:21 浏览: 35
生产者消费者模式是一种常见的多线程编程模式,其中一个线程负责生产数据,另一个线程负责消费数据。Python中可以使用queue模块来实现生产者消费者模式。
以下是一个简单的Python生产者消费者线程的例子:
```python
import threading
import queue
import time
# 生产者线程
class ProducerThread(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self)
self.queue = queue
def run(self):
for i in range(10):
item = "item-" + str(i)
self.queue.put(item)
print("生产者生产了", item)
time.sleep(1)
# 消费者线程
class ConsumerThread(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self)
self.queue = queue
def run(self):
while True:
item = self.queue.get()
if item is None:
break
print("消费者消费了", item)
time.sleep(2)
# 创建一个队列
queue = queue.Queue()
# 创建一个生产者线程和一个消费者线程
producer_thread = ProducerThread(queue)
consumer_thread = ConsumerThread(queue)
# 启动线程
producer_thread.start()
consumer_thread.start()
# 等待生产者线程结束
producer_thread.join()
# 等待队列为空
while not queue.empty():
time.sleep(1)
# 发送结束信号给消费者线程
queue.put(None)
# 等待消费者线程结束
consumer_thread.join()
```
在上面的例子中,我们创建了一个生产者线程和一个消费者线程,并使用queue模块中的Queue类来实现线程间通信。生产者线程每隔1秒钟生产一个数据项,消费者线程每隔2秒钟消费一个数据项。当生产者线程生产完所有数据项后,向队列中发送一个None值,表示生产者线程已经结束。消费者线程在从队列中获取到None值后,退出循环,表示消费者线程已经结束。