正如你在书中看到的
Queue
source code
项目
排队
实际存储在
_queue
属性。它可以用来扩展
排队
通过继承:
import asyncio
from random import shuffle
class MyQueue(asyncio.Queue):
def shuffle(self):
shuffle(self._queue)
async def main():
queue = MyQueue()
await queue.put(1)
await queue.put(2)
await queue.put(3)
queue.shuffle()
while not queue.empty():
item = await queue.get()
print(item)
if __name__ == '__main__':
asyncio.run(main())
如果你想洗牌现有的
排队
例如,您可以直接执行此操作:
queue = asyncio.Queue()
shuffle(queue._queue)
由于显而易见的原因,这通常不是一个好的解决方案,但另一方面,可能性是
排队
未来的实现将发生变化,使IT问题看起来相对较低(至少在我看来)。