этот асинхронный запрос python улучшает производительность по сравнению с обычными запросами на блокировку? - PullRequest
0 голосов
/ 01 марта 2019
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(который не асинхронно ждут)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...