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

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

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

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

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

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

Ознакомиться с интерактивным примером можно тут.

#threading
  • 👍 40
  • 🔥 2
More from @python_academy
  1. Oct 6, 2026Генерируем QR-код Простой, но удобный и полезный пакет для создания QR-кодов. Для отрисовк…
  2. Oct 5, 2026Корутины (Coroutines) В PEP 342 были представлены корутины, которые стали некой противопол…
  3. Oct 4, 2026Порядок разрешения методов В Python существует так называемый Method Resolution Order (MRO…
  4. Oct 3, 2026Полезные функции модуля itertools Модуль itertools - инструмент в Python для работы с итер…
  5. Oct 2, 2026Scrapy: Мощный инструмент для веб-скрапинга на Python Scrapy - это высокоэффективная библи…
  6. Oct 1, 2026⁠Упаковка параметров с помощью urlencode Довольно часто приходится работать с разнообразны…
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 →