标准库中还有其他队列吗?

时间:2011-12-03 13:09:50

标签: python queue producer-consumer thunk

我想排队

lambda : Popen(.....)

稍后致电/等待。 然后向暂停的Popens添加更多内容到队列中, 然后再次消耗它们等等。

主Queue模块非常关注同步,这使得 api在某些地方感觉有点怪异。我不关心同步(单线程 程序,Popen只是做他们的工作,并在错误时抛出异常,他们不会影响 环境以任何重要的方式(它们生成文件)

我是否应该使用我稍后添加的生成器。 如果是这样的话,那就是向生成器添加项目的好方法,请调用

gena = itertools.chain(gena,[item))
每次看起来都很浪费。

3 个答案:

答案 0 :(得分:3)

是的,您可以使用deque(collections.deque),这是一个可以在任一端高效推送和弹出的列表。您也可以使用列表而不用担心效率低下,因为它可能无关紧要。

答案 1 :(得分:3)

您可以使用collections.deque

from collections import deque

queue = deque()
queue.append(new) # append
current = queue.popleft() # first item

答案 2 :(得分:2)

由于您不关心多线程,因此逻辑选择似乎是collections.deque