Асинхронность

#7 - Многопоточность vs Async

#7 - Многопоточность vs Async

За урок мы разберем ключевые отличия между многопоточностью и асинхронным программированием. Мы на практике посмотрим разницу в их применении и сравним результаты.

Видеоурок

Асинхронное программирование и многопоточность решают одну задачу — выполнение нескольких операций без блокировки программы, но делают это по-разному. Понимание этой разницы критически важно для выбора правильного подхода.


Многопоточность (threading) использует несколько потоков внутри одного процесса. Это создаёт ощущение параллельной работы, однако в Python есть ограничение — GIL (Global Interpreter Lock). Он не позволяет одновременно выполнять Python-код в нескольких потоках, из-за чего многопоточность плохо подходит для тяжёлых вычислений.


Тем не менее, threading эффективен в задачах с ожиданием: работа с сетью, файлами или API. Пока один поток ждёт, другой может выполняться, что даёт ускорение.


Асинхронное программирование работает иначе. Здесь используется один поток и цикл событий (event loop), который переключается между задачами в моменты ожидания. Благодаря этому можно выполнять множество операций без создания потоков, что делает код более лёгким и масштабируемым.


В async задачи могут завершаться не по порядку. Например, если одна задача ждёт 2 секунды, а другая — 1 секунду, вторая завершится раньше, даже если была запущена позже. Это ключевая особенность асинхронного подхода.


Выбор зависит от задачи: async лучше подходит для I/O (запросы, базы, боты), threading — когда нельзя использовать async. Для вычислительно сложных задач стоит использовать multiprocessing, так как он обходит ограничения GIL.

Материалы для курса

Чтобы скачивать материалы к видеокурсам необходимо оформить подписку на сайт

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Также стоит посмотреть

Уроки Python Django / Создание сайта
12 уроков
Уроки Python для начинающих
21 урок
Разработка игр на Python с нуля / Уроки Pygame
10 уроков
Изучение Python до профи / Основы, Django, TKinter
Изучение Python UI (GUI Apps) / Программы на Питон
10 уроков
Уроки ChatGPT API / Разработка программ на Python и ChatGPT
7 уроков
Комментарии
Добавить комментарий

Пока комментариев нет