工人:
def worker():
while True:
fruit, colour = q.get()
print 'A ' + fruit + ' is ' + colour
q.task_done()
将项目放入队列:
fruit = 'banana'
colour = 'yellow'
q.put(fruit, colour)
输出:
>>> A banana is yellow
我怎样才能做到这一点?我试了一下并得到ValueError: too many values to unpack
,然后才意识到我的q.put()
将两个变量放入队列。
有没有办法将一组“变量/对象”放入一个队列项中,就像我试图做的那样?
答案 0 :(得分:7)
是的,使用元组:
fruit = 'banana'
colour = 'yellow'
q.put((fruit, colour))
它应该被自动解压缩(应该,因为我不能尝试它)。
答案 1 :(得分:1)
我只列出一个清单:
result = q.get()
fruit = result[0]
colour = result[1]
然后像这样得到它:
{{1}}
答案 2 :(得分:0)
所以,我认为解决这个问题的最佳方法是稍微重构一下你的数据。使某种对象保持一对值(在本例中为水果和颜色),然后将该对象放入队列,然后在需要时拉出变量。
如果您愿意,我可以稍后发布一些示例代码。
答案 3 :(得分:0)
Python 还借助类提供数据抽象。
因此,另一种方法是在类的帮助下放置一个对象(将相关信息抽象到一起),如下所示。
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()