TGViewer
Python ментор Python ментор @python_dev_mentor · 533 subscribers
Post #15 1.07K
Python ментор #interview, #multiprocessing, #multithreading Поехали дальше! Нужно запомнить вот такой факт: существует 2 типа задач в программировании: - задачи ввода-вывода: io-bound - задачи вычисления: cpu-bound Почему это важно 🤨? С помощью этой нехитрой информации…
#interview, #multithreading

Пришло время для примеров, и начнем с того, как применять многопоточность! В Python, для этого обычно используется модуль threading, однако в большинстве случаев более удобным выбором будет использовать concurrent.futures.

Давайте рассмотрим пример, где мы выполняем запросы на веб-сайт (в данном случае, Яндекс).Я назвал эту функцию io_bound, потому что сделать HTTP-запрос является наиболее типичной io-bound задачей. На первой картинке мы выполняем 10 запросов последовательно, а на второй - используем многопоточность! ThreadPoolExecutor создает определенное количество потоков (в данном случае 5, что регулируется параметром `max_workers`), выполняет задачи асинхронно в разных потоках и дожидается, пока каждый поток завершит работу.

Время выполнения кода на первой картинке составляет 4 секунды, тогда как на второй - менее секунды 😲! Ваши результаты могут отличаться.

Буквально за две строчки мы получаем увеличение скорости выполнения нашего кода в 4-5 раз. Почему так происходит? Как упомянуто выше, выполнение HTTP-запроса является io-bound задачей, и большую часть времени мы ожидаем ответа от сервера Яндекса. Пока один поток ждет, другой может выполнить еще один запрос и передать управление следующему потоку. Таким образом, код с потоками не ждет ответа сервера, а выполняет запросы, пока есть доступные потоки.

Попробуйте написать такой код сами, поиграйте с параметром max_workers, сравните время выполнения 🧑‍💻!

В следующем посте разберем уже работу с несколько процессами❗️
  • 👍 13
  • 💯 5
  • 🤝 4
  • ✍ 1
  • 😱 1
More from @python_dev_mentor
  1. Oct 16, 2024Здарова всем ✌️ В этом месяце я сам начал активно готовиться к собеседованиям и решил подт…
  2. Oct 9, 2024Python ментор pinned a photo
  3. Oct 9, 2024Три недели назад мы с Сашей @a_krasilov (он был первый кто, сделал задание), приступили к…
  4. Oct 2, 2024Так получилось, что в видео я смешал свою личную историю (не базированную 😱) с базой 🐘,…
  5. Oct 1, 2024Недавно сделал тестовое задание, первый раз за 6 лет! Не занимался этим с момента поиска п…
  6. Sep 23, 2024На выходных написал мой бывший ученик — прошел год с тех пор, как мы закончили работу над…
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 →