Python 如何在队列中放置和获取一组多个项目?
工人: 将项目放入队列:Python 如何在队列中放置和获取一组多个项目?,python,variables,task-queue,Python,Variables,Task Queue,工人: 将项目放入队列: def worker(): while True: fruit, colour = q.get() print 'A ' + fruit + ' is ' + colour q.task_done() 输出: fruit = 'banana' colour = 'yellow' q.put(fruit, colour) 我怎样才能做到这一点?我尝试了一下,得到了ValueError:太多的值,无法解包,直到那时
def worker():
while True:
fruit, colour = q.get()
print 'A ' + fruit + ' is ' + colour
q.task_done()
输出:
fruit = 'banana'
colour = 'yellow'
q.put(fruit, colour)
我怎样才能做到这一点?我尝试了一下,得到了ValueError:太多的值,无法解包
,直到那时我才意识到我的q.put()
将这两个变量都放入了队列中
有没有办法像我尝试的那样,将一组变量/对象放入一个队列项目中?是的,使用元组:
>>> A banana is yellow
它应该被自动解包(应该,因为我不能在atm机上试用)。所以,我认为最好的方法是重构一下数据。制作某种对象来保存一对值(在本例中为水果和颜色),然后将该对象放入队列,然后在需要时取出变量
如果您愿意,我可以稍后发布一些示例代码。我只想列出:
fruit = 'banana'
colour = 'yellow'
q.put((fruit, colour))
然后像这样得到它:
fruit = 'banana'
colour = 'yellow'
q.put([fruit, colour])
Python还通过类的帮助提供数据抽象 因此,另一种方法是在类的帮助下放置对象(将相关信息抽象在一起),如下所示
result = q.get()
fruit = result[0]
colour = result[1]
是的,这本质上就是@dav1d的答案所做的,使用元组作为值保持对象
class Fruit(object):
def __init__(self, name, color):
self.name = name
self.color = color
q.put(Fruit('banana', 'yellow'))
def worker():
while True:
fruit = q.get()
print 'A ' + fruit.name + ' is ' + fruit.color
q.task_done()