栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python asyncio:处理潜在的无限列表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python asyncio:处理潜在的无限列表

我的情况是关于通过传送带将数据流传输到消费者。我还可以做些什么?

您可以创建固定数量的任务,这些任务大致与传送带的容量相对应,然后将它们弹出队列。例如:

async def consumer(queue):    while True:        line = await queue.get()        # connect to API, Mongo, etc.        ...        queue.task_done()async def producer():    N_TASKS = 10    loop = asyncio.get_event_loop()    queue = asyncio.Queue(N_TASKS)    tasks = [loop.create_task(consume(queue)) for _ in range(N_TASKS)]    try:        with open('input') as f: for line in f:     await queue.put(line)        await queue.join()    finally:        for t in tasks: t.cancel()

由于与线程不同,任务是轻量级的,并且不占用操作系统资源,因此最好在创建“太多”任务时犯错。asyncio可以毫不费力地处理成千上万的任务,尽管这对于这些任务来说可能是过大的事-
几十就足够了。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647412.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号