Чему вы научитесь
- ✅ Понимать разницу между конкурентностью и параллелизмом
- ✅ Отличать CPU-bound и I/O-bound задачи и выбирать подходящий подход
- ✅ Разбираться в модели выполнения Python и роли GIL
- ✅ Использовать потоки с помощью threading
- ✅ Безопасно синхронизировать потоки через Lock, Semaphore, Event и Condition
- ✅ Организовывать обмен данными между потоками через Queue
- ✅ Работать с процессами через multiprocessing
- ✅ Использовать Pipe, Manager и shared_memory для обмена данными между процессами
- ✅ Создавать пулы процессов и управлять задачами через map и apply_async
- ✅ Писать асинхронный код с asyncio, async, await, Task и TaskGroup
- ✅ Работать с тайм-аутами, отменой задач и структурированной конкурентностью
- ✅ Выбирать подходящий механизм конкурентности под задачу и проектировать устойчивые системы
О курсе
Конкурентность — одна из ключевых тем для Python-разработчика, который хочет писать более быстрые, устойчивые и профессиональные приложения. Этот курс поможет разобраться, когда использовать потоки, когда нужны процессы, а когда лучше выбрать асинхронность.
Вы начнёте с базовых понятий: чем конкурентность отличается от параллелизма, почему важно различать CPU-bound и I/O-bound задачи, как Python выполняет код и какую роль играет GIL. Затем перейдёте к практической работе с потоками: threading, синхронизация, очереди, безопасный обмен данными и типичные ошибки многопоточного кода.
После этого вы разберёте multiprocessing: процессы, пулы процессов, обмен данными через Pipe, Manager и shared_memory. Это поможет понять, как работать с вычислительными задачами и использовать возможности нескольких ядер.
Отдельный блок посвящён asyncio: корутинам, async/await, задачам, TaskGroup, тайм-аутам, отмене задач и структурированной конкурентности. Вы научитесь выбирать подходящий инструмент под конкретный сценарий и лучше понимать, как устроены современные backend-приложения, сетевые сервисы и системы обработки данных.
Главная цель курса — не просто познакомить вас с инструментами конкурентности, а научить применять их осознанно: писать безопасный код, избегать гонок данных, понимать ограничения Python и проектировать решения, которые подходят под реальные задачи.
Для кого этот курс
Начальные требования
Для комфортного прохождения курса желательно уверенно знать основы Python: переменные, функции, классы, исключения, коллекции и базовую работу с модулями.
Опыт профессиональной разработки не обязателен, но будет полезно, если вы уже писали небольшие программы на Python и хотите лучше понимать, как ускорять код и работать с несколькими задачами одновременно.
Наши преподаватели
Как проходит обучение
Обучение проходит в удобном формате на Stepik: вы изучаете объяснения, разбираете примеры, выполняете практические задания и постепенно переходите от базовых понятий к реальным сценариям использования threading, multiprocessing и asyncio.
Рекомендуемая нагрузка — 4–5 часов в неделю. Такой темп поможет спокойно освоить сложную тему, регулярно практиковаться и постепенно сформировать уверенность в работе с конкурентным кодом.
Программа курса
Отзывы прошедших курс
Что вы получаете
- ✅ понимание ключевых моделей конкурентности: потоки, процессы и асинхронность
- ✅ навык выбора подходящего инструмента под CPU-bound и I/O-bound задачи
- ✅ практику работы с threading, multiprocessing и asyncio
- ✅ понимание GIL и ограничений производительности Python
- ✅ умение писать более безопасный и устойчивый конкурентный код
- ✅ опыт работы с синхронизацией, очередями, пулами процессов и задачами asyncio
- ✅ базу для разработки backend-сервисов, автоматизации и систем обработки данных
- ✅ практику, близкую к профессиональной разработке
- ✅ сертификат Stepik после успешного прохождения курса