Is it possible to limit the number of coroutines running corcurrently in asyncio?

后端 未结 3 2170
臣服心动
臣服心动 2021-02-12 15:15

I already wrote my script using asyncio but found that the number of coroutines running simultaneously is too large and it often ends up hanging around.

So I would like

3条回答
  •  天涯浪人
    2021-02-12 15:31

    You might want to consider using aiostream.stream.map with the task_limit argument:

    from aiostream import stream, pipe
    
    async def main():
        xs = stream.iterate(players)
        ys = stream.map(xs, my_func, task_limit=100)
        zs = stream.list(ys)
        results = await zs
    

    Same approach using pipes:

    async def main():
        results = await (
            stream.iterate(players) | 
            pipe.map(my_func, task_limit=100) |
            pipe.list())
    

    See the aiostream project page and the documentation for further information.

    Disclaimer: I am the project maintainer.

提交回复
热议问题