asyncio队列多生产者(同步)单消费者
创始人
2024-09-21 06:30:17
0

下面是一个使用asyncio实现的多生产者(同步)单消费者的示例代码:

import asyncio
import random

async def producer(queue):
    while True:
        # 模拟一些生产的任务
        await asyncio.sleep(random.random())
        item = random.randint(1, 100)
        await queue.put(item)
        print(f'生产者放入队列: {item}')

async def consumer(queue):
    while True:
        # 模拟一些消费的任务
        await asyncio.sleep(random.random())
        item = await queue.get()
        print(f'消费者从队列取出: {item}')
        queue.task_done()

async def main():
    queue = asyncio.Queue()
    producers = [asyncio.create_task(producer(queue)) for _ in range(3)]
    consumer_task = asyncio.create_task(consumer(queue))

    # 等待所有生产者完成
    await asyncio.gather(*producers)

    # 等待队列中的任务全部完成
    await queue.join()

    consumer_task.cancel()
    await consumer_task

asyncio.run(main())

在这个示例中,我们创建了一个asyncio队列,并创建了多个生产者任务和一个消费者任务。生产者任务循环执行,每次生产一个随机数并放入队列中。消费者任务循环执行,每次从队列中取出一个元素并进行处理。在生产者任务完成后,我们使用await queue.join()等待队列中的所有任务都完成,然后取消消费者任务。最后,我们使用asyncio.run(main())来运行主任务。

相关内容

热门资讯

透视挂!aapoker免费透视... 透视挂!aapoker免费透视脚本(透视)透视插件(果然真的有挂)1、任何aapoker免费透视脚本...
透视软件!aapoker透视脚... 透视软件!aapoker透视脚本(透视)辅助插件工具(一直是有挂);1、玩家可以在aapoker透视...
透视玄学!aapoker安装包... 透视玄学!aapoker安装包怎么使用(透视)辅助插件工具(竟然真的是有挂);1、透视玄学!aapo...
透视代打!aapoker透视脚... 透视代打!aapoker透视脚本(透视)透视软件(一直是有挂)1、该软件可以轻松地帮助玩家将aapo...
透视教程!aapoker俱乐部... 透视教程!aapoker俱乐部靠谱吗(透视)免费透视脚本(好像是有挂);aapoker俱乐部靠谱吗软...
透视实锤!aapoker怎么提... 透视实锤!aapoker怎么提高中牌率(透视)万能辅助器(果然真的有挂)1、下载好aapoker怎么...
透视有挂!aapoker脚本(... 透视有挂!aapoker脚本(透视)免费透视脚本(都是存在有挂)1、该软件可以轻松地帮助玩家将aap...
透视神器!aapoker免费透... 透视神器!aapoker免费透视脚本(透视)辅助(其实有挂);1、进入到aapoker免费透视脚本黑...
透视游戏!aa poker辅助... 透视游戏!aa poker辅助(透视)透视脚本下载(都是是有挂);aa poker辅助辅助器中分为三...
透视科技!aa poker透视... 透视科技!aa poker透视软件(透视)万能辅助器(总是是真的有挂)1、aa poker透视软件系...