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 и ожидает?Если это правда, как?Потому что я нахожу, что каждая печать («res») является последующей печатью («url»), так же, как и обычный код блокировки.
Если я не жду fetch_single и просто запускаю его, должен цикл for выполняться немедленно, не беспокоясьответ на запрос?
Если приведенный выше код не может улучшить производительность, какой самый простой способ повысить производительность, используя async и ожидать блокирования запросов типа lib?особенно когда URL-адреса находятся не в плоском списке, а в глубоко вложенном словаре.
Пожалуйста, не указывайте пути в aiohttp, или в многопроцессорной обработке (которая не совместима с gevent на стороне сервера), или в multiprocessing.pool.ThreadPool(который не асинхронно ждут)