python实现一个生产者-消费者模式的多线程程序
时间: 2024-05-12 12:13:46 浏览: 98
用Python的线程来解决生产者消费问题的示例
下面是一个使用Python的多线程模块实现生产者-消费者模式的示例程序:
```python
import threading
import time
import queue
# 生产者线程类
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("Produced:", 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()
print("Consumed:", item)
time.sleep(2)
self.queue.task_done()
# 创建一个队列
queue = queue.Queue()
# 创建一个生产者线程和一个消费者线程
producer_thread = ProducerThread(queue)
consumer_thread = ConsumerThread(queue)
# 启动线程
producer_thread.start()
consumer_thread.start()
# 等待队列被处理完
queue.join()
```
在这个示例程序中,我们首先定义了一个生产者线程类和一个消费者线程类,分别用于生产和消费数据。然后,我们创建一个队列对象用于存储生产者生产的数据。接着,我们创建一个生产者线程和一个消费者线程,并启动它们。最后,我们使用`queue.join()`方法等待队列被处理完。
需要注意的是,在消费者线程中,我们使用了`queue.task_done()`方法来通知队列已经处理完一个任务。这个方法应该在每次从队列中获取一个任务并处理完之后调用,以便队列能够正确地跟踪任务的状态。
阅读全文