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

-1 投票
3 回答
599 浏览
提问于 2025-04-17 07:36

我想要排队

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),它就像一个列表,但你可以很方便地在两头添加或删除元素。你也可以用普通的列表,虽然效率可能没那么高,但如果你的需求不大,这也没关系。

撰写回答