首页 > 解决方案 > 与正常阻塞请求相比,此 python 异步请求是否提高了性能?

问题描述

async def fetch_single(url):  
    res=requests.get(url).json()
    return res

async def fetch_all(urls):  
    results=[]  
    for url in urls:  
        print ("url")  
        res=await fetch_single(url)  
        print("res")  
        results.append(res)     
    return res  
def async_main(urls):  
    return asyncio.run(fetch_all(urls))

上面的代码比正常请求代码快吗,正常意味着没有 aync 和等待?如果这是真的,怎么办?因为我发现每个 print("res") 都遵循 print ("url"),就像正常的阻塞代码一样。

如果我不等待 fetch_single 而只是运行它,是否应该立即执行 for 循环而不关心请求响应?

如果上面的代码不能提高性能,那么使用 async 和 await 来提高性能的最简单方法是什么来阻塞 lib 之类的请求?特别是当 urls 不在平面列表中而是在深层嵌套字典中时。

请不要在 aiohttp 或 multiprocessing(与服务器端的 gevent 不兼容)或 multiprocessing.pool.ThreadPool(不是异步等待)中提供方式

标签: pythonasynchronousasync-await

解决方案


推荐阅读