我想分批处理协程,如下所示:
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)])
没有像预期的那样处理协程:协程是一次创建的。只有执行是有限的。我不想一次创建所有任务。任务需要批量创建。
发布于 2021-06-29 21:53:38
这就是我要找的:
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())
https://stackoverflow.com/questions/68137200
复制相似问题