如何在队列中放置和获取一组多个项目?

时间:2012-10-19 15:14:48

标签: 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)

输出:

>>> A banana is yellow

我怎样才能做到这一点?我试了一下并得到ValueError: too many values to unpack,然后才意识到我的q.put()将两个变量放入队列。

有没有办法将一组“变量/对象”放入一个队列项中,就像我试图做的那样?

4 个答案:

答案 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()