微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 异步协程批量处理

如何解决Python 异步协程批量处理

我想批量处理协程,例如:

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 内置函数或库来做到这一点,这样我就不必单独创建批次?

很遗憾

async with asyncio.Semaphore(10):
    await asyncio.gather(*[test(i) for i in range(100)])

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

解决方法

这就是我要找的:

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())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。