标准库中还有其他队列吗?
我想要排队
lambda : Popen(.....)
以便稍后调用/等待。然后再把一些暂停的 Popen 加入队列,接着再消费它们,循环往复。
主要的队列模块非常关注同步,这让它的接口在某些地方感觉有点奇怪。我并不在乎同步(因为我只是在单线程程序中运行,Popen 只需完成它们的工作,出错时抛出异常,而且它们不会对环境产生重要影响(它们只会生成文件))。
我应该直接使用一个生成器,然后在稍后的时间把东西加进去吗?如果是这样,怎么才能有效地往生成器里添加项目呢?每次调用
gena = itertools.chain(gena,[item))
似乎都太浪费了。
3 个回答
2
因为你不太关心多线程的问题,所以看起来最合适的选择就是 collections.deque。
3
你可以使用 collections.deque 这个工具:
from collections import deque
queue = deque()
queue.append(new) # append
current = queue.popleft() # first item
3
是的,你可以使用一个叫做deque的东西(collections.deque),它就像一个列表,但你可以很方便地在两头添加或删除元素。你也可以用普通的列表,虽然效率可能没那么高,但如果你的需求不大,这也没关系。