首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >批处理的Python异步协程

批处理的Python异步协程
EN

Stack Overflow用户
提问于 2021-06-26 05:25:43
回答 1查看 391关注 0票数 6

我想分批处理协程,如下所示:

代码语言:javascript
运行
复制
import asyncio

async def test(i):
    print(f"Start Task {i}")
    await asyncio.sleep(0.1)
    print(f"Finished Task {i}")

async def main():
    for i in range(10):
        await asyncio.gather(*[test(10*i+j) for j in range(10)])


asyncio.run(main())

有没有办法使用Python内置组件或库来实现这一点,这样我就不必单独创建批处理了?

不幸的是

代码语言:javascript
运行
复制
async with asyncio.Semaphore(10):
    await asyncio.gather(*[test(i) for i in range(100)])

没有像预期的那样处理协程:协程是一次创建的。只有执行是有限的。我不想一次创建所有任务。任务需要批量创建。

EN

回答 1

Stack Overflow用户

发布于 2021-06-29 21:53:38

这就是我要找的:

代码语言:javascript
运行
复制
import asyncio

from aiodecorators import Semaphore


@Semaphore(10)
async def test(i):
    print(f"Start Task {i}")
    await asyncio.sleep(0.1)
    print(f"Finished Task {i}")


async def main():
    await asyncio.gather(*[test(i) for i in range(100)])


asyncio.run(main())
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68137200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档