asyncio.Queue() 使用例子
时间: 2023-08-17 15:03:55 浏览: 164
下面是一个使用 `asyncio.Queue()` 的例子:
```python
import asyncio
async def produce(queue, n):
for x in range(1, n+1):
print(f"Producing {x}")
await queue.put(x)
await asyncio.sleep(1)
async def consume(queue):
while True:
item = await queue.get()
print(f"Consuming {item}")
queue.task_done()
async def main():
queue = asyncio.Queue()
producer = asyncio.create_task(produce(queue, 5))
consumer = asyncio.create_task(consume(queue))
await asyncio.gather(producer)
await queue.join()
consumer.cancel()
asyncio.run(main())
```
这个例子中,我们创建了一个异步队列 `queue`,其中生产者 `produce()` 每秒钟向队列中添加一个数字,消费者 `consume()` 从队列中不断获取数字并消费。在 `main()` 函数中,我们创建了两个协程任务,一个用于生产者,另一个用于消费者。我们使用 `asyncio.gather()` 函数来并行运行这两个任务。在生产者生产完所有数据后,我们等待队列中所有任务都完成,最后取消消费者任务。
阅读全文