【发布时间】:2015-10-28 05:14:15
【问题描述】:
我想同时在python中创建消费者和生产者线程,生产者线程将追加队列,消费者线程检索存储在队列中的项目。我需要与生产者一起启动消费者线程。消费者线程应该等到队列得到一个项目。当队列中没有项目时它应该终止。我是python新手,请帮忙。
要求:
如果有 10 个数字的列表,生产者线程应该插入一个包含一项的队列,消费者线程应该检索这个数字。两个线程应该同时启动。
from queue import Queue
import threading
import time
class producer(threading.Thread):
def __init__(self, list_of_numbers):
threading.Thread.__init__(self)
self.list_items = list_of_numbers
def run(self):
for i in self.list_items:
queue.put(str(i))
class consumer(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while queue.not_empty:
queue_ret = queue.get()
print("Retrieved", queue_ret)
queue = Queue()
producers = producer([10,20,5,4,3,2,1])
consumers = consumer()
producers.start()
consumers.start()
producers.join()
consumers.join()
【问题讨论】:
-
我已经尝试过使用队列,但我无法终止消费者线程。
-
@FunkySayu 说了什么。另外,您是否查看过此任务的多处理队列? Python 可以处理这种情况。
-
你的代码是什么样子的
-
我为此使用了线程。但是如果消费者线程比生产者线程更早开始,它有时会失败,并且队列为空,我也尝试过线程中的条件。
标签: python multithreading