在asyncio
中,可以使用Queue
来实现共享队列中的变量。下面是一个使用asyncio.Queue
的示例代码:
import asyncio
async def producer(queue):
for i in range(5):
await queue.put(i)
print(f'Produced: {i}')
await asyncio.sleep(1)
async def consumer(queue):
while True:
item = await queue.get()
print(f'Consumed: {item}')
queue.task_done()
async def main():
queue = asyncio.Queue()
producer_task = asyncio.create_task(producer(queue))
consumer_task = asyncio.create_task(consumer(queue))
await asyncio.gather(producer_task, consumer_task)
asyncio.run(main())
在上面的代码中,我们定义了一个producer
协程和一个consumer
协程。producer
协程负责向队列中添加元素,consumer
协程负责从队列中取出元素并进行处理。
在main
函数中,我们创建了一个asyncio.Queue
实例,并使用asyncio.create_task
创建了producer
和consumer
两个任务。然后,我们使用asyncio.gather
来同时运行这两个任务。
运行上述代码,你会看到生产者每隔1秒向队列中添加一个元素,消费者不断从队列中取出元素并输出。这样就实现了在asyncio
共享队列中的变量。