5

工人:

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()把两个变量都放到了队列中。

有什么方法可以将一组“变量/对象”放入一个队列项中,就像我尝试做的那样?

4

4 回答 4

11

是的,使用元组:

fruit = 'banana'
colour = 'yellow'
q.put((fruit, colour))

它应该自动解包(应该,因为我无法在 atm 尝试)。

于 2012-10-19T15:16:52.433 回答
1

我只是列个清单:

fruit = 'banana'
colour = 'yellow'
q.put([fruit, colour])

然后得到它:

result = q.get()
fruit = result[0]
colour = result[1]
于 2020-05-01T13:45:21.950 回答
0

所以,我认为解决这个问题的最好方法是稍微重构你的数据。制作某种对象来保存一对值(在本例中为水果和颜色),然后将该对象放入队列中,然后在需要时取出变量。

如果您愿意,我可以稍后发布一些示例代码。

于 2012-10-19T15:19:31.633 回答
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()
于 2020-12-18T20:21:03.370 回答