Как использовать многопоточность в Python при долгих http запросах?
Доброго времени суток. Реализую программу, в которой цикл проходится по массиву, выполняет определенные действия с данными, отправляет http запрос на сторонний api - принимает ответ, а затем записывает новый элемент в другой массив (условно).
Проблема в том, что http запрос занимает достаточно много времени на фоне большого объёма обрабатываемых данных - ощутимо, скрипт работает в несколько раз дольше, чем если бы я не тратил время на эти запросы. Соответственно, ресурсы в это время простаивают. Почитал о том, что многопоточность в Python немного не такая и не даст прироста (если только её специально не сломать как-то) и применяется только в случаях, когда ресурсы, действительно, стоят без дела. Итак, вопрос:
Как можно реализовать такую фичу? Что бы скрипт в итерации цикла доходил до места, где отправляется запрос и не ожидая ответа, шёл дальше по циклу. Точнее, ожидая, но в фоне. Что бы результат, как бы "догонял" цикл.
Желательно примеры кода условного или хотя бы в какую сторону думать, как организовать это всё... Спасибо.
kkolorid, будет работать. И из того что я понял из вашего вопроса, делает код ровно то что нужно - отправляет запросы на массив URL и ждёт ответа от всех, обрабатывая ответы в fetch.
Дмитрий Шицков, не могли бы код тогда прокомментировать? Вообще не могу понять, что там происходит... Хотя это не первый мой ЯП. Почему-то ответ печатается только с сайта yifei.me
Вот ещё более понятный мне пример, но почему-то с await aiohttp.request('GET', URL) свой запрос через стандартные решения Питона сделать не получается.