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())来运行主任务。

相关内容

热门资讯

揭露透视!wejoker辅助器... 揭露透视!wejoker辅助器要钱玩吗,贵州微乐自建房辅助软件下载,要领教程(有挂方式)-哔哩哔哩1...
有挂透视!hhpoker辅助器... 有挂透视!hhpoker辅助器视频,小程序微乐辅助器下载,手筋教程(新版有挂)-哔哩哔哩有挂透视!h...
详细透视!拱趴大菠萝万能挂图解... 详细透视!拱趴大菠萝万能挂图解,手机微乐小程序游戏破解器,模块教程(新版有挂)-哔哩哔哩1、在拱趴大...
解密透视!cloudpoker... 您好,cloudpoker作弊这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054...
了解透视!hh poker辅助... 了解透视!hh poker辅助有用吗,微乐小程序脚本,积累教程(有挂技巧)-哔哩哔哩1、hh pok...
了解透视!hhpoker买挂,... 了解透视!hhpoker买挂,微乐陕西麻将破解,学习教程(有挂存在)-哔哩哔哩1、打开软件启动之后找...
解密透视!wejoker开挂,... 解密透视!wejoker开挂,微乐自建房辅助工具下载入口在哪,办法教程(揭秘有挂)-哔哩哔哩1、实时...
科普透视!wepoker正确养... 科普透视!wepoker正确养号方法,微信微乐自建房辅助工具,经验教程(有挂猫腻)-哔哩哔哩1、这是...
辅助透视!poker辅助器免费... 您好,poker辅助器免费安装这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054...
揭露透视!德普之星透视辅助,微... 揭露透视!德普之星透视辅助,微乐自建房辅助下载,举措教程(竟然有挂)-哔哩哔哩1)德普之星透视辅助免...