繁体   English   中英

我可以加快嵌套异步/等待aiohttp代码的速度吗?

[英]Can I speed up nested async/await aiohttp code?

如果在下面的代码in range(1)更改in range(5) ,则运行时间大约要长5倍。 我希望从并发中获得更好的数字。 我是否设置了错误的代码?

import asyncio
import aiohttp

async def fetch(session):
    async with session.get("http://www.example.com") as res:
        await res.text()

async def foo(session):
    for i in range(10):
        await fetch(session)

async def main(loop):
    async with aiohttp.ClientSession(loop = loop) as session:
        for i in range(1):
            await foo(session)

loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))

您正在寻找的是asyncio.gather它允许并行运行多个协程。

您将得到一个类似于以下代码的代码

def main():
    # init session
    coroutines = list()
    for i in range(5):
        coroutine = fetch(session)  # XXX: mind the fact that there is no await keyword here
        coroutines.append(coroutine)
    await asyncio.gather(*coroutines)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM