python - 与正常阻塞请求相比,此 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(不是异步等待)中提供方式
解决方案
推荐阅读
- mysql - MySQL更新或插入取决于NULL?
- android - 如何单击堆栈颤动中位于主屏幕后面的屏幕上的按钮
- laravel - laravel jetstrap 问题 - 页面不成形
- azure-cognitive-search - 实时电话通话音频的消费
- docker - 如何检查最旧 docker 版本的 docker-compose 最新限制?
- c++ - 在 g++ 编译器中显示错误的代码地址错误
- google-chrome - 在 Chrome 中防止 meta http-equiv="refresh"
- simulation - 是否有可能向 Ansys Mechanical 添加源术语?
- sql - 连续3次查询SQL表列中相同的数据
- ios - 如何检测 UIImagePickerController 或 UIDocumentPickerController 窗口是否打开