TGViewer
Python Academy Python Academy @python_academy · 44.2K subscribers
Post #2036 5.15K
Асинхронно скачиваем файлы

Имея список ссылок на картинки, которые нужно скачать, мы можем это сделать используя простой цикл for, тем самым скачав их последовательно одна за одной.

Но в таких ситуациях как эта (скачивание огромного количества небольших файлов) распараллеливание задачи существенно ускорит процесс.

Для этого воспользуемся функцией ThreadPoolExecutor из стандартного пакета concurrent.futures. Она позволяет запустить нашу функцию, в нескольких екземплярах в параллельных потоках. В конструкторе необходимо указать максимальное количество потоков, которые будут одновременно запущены.

Далее метод .map(download, urls) создает екземпляры нашей функции для скачивания файла, и раскидывает в них элементы списка urls.

Но будьте внимательны: так как скачивание файла — это IO-операция, такой метод не ускоряет вычисления кода. Он лишь позволяет запустить скачивание следующего файла, не дождавшись пока скачается предыдущий.

#python #threading
  • ❤ 12
More from @python_academy
  1. Sep 27, 2026Что такое глубокая копия? Глубокая копия используется для хранения значений, которые уже с…
  2. Sep 26, 2026Pyrogram: Работа с Telegram API на Python Pyrogram - это выдающаяся библиотека на Python,…
  3. Sep 25, 2026Функция reload() Функция reload() в Python перезагружает ранее импортированный модуль. Это…
  4. Sep 24, 2026FFmpeg: Лучшее решение для обработки мультимедийных файлов FFmpeg - это бесплатная и откры…
  5. Sep 23, 2026Возврат нескольких значений из функции Знаете ли вы, что можно осуществлять возврат нескол…
  6. Sep 22, 2026Получение срезов итераторов Если вы попытаетесь получить срез итератора, то столкнётесь с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →