← Все навыки

Python. Процессы и потоки

От итераторов и генераторов до event loop и asyncio: разбираете механику, пишете свой reverse proxy и нагружаете его

4 раздела, 18 тем asyncio, threading, multiprocessing Индивидуально с ментором

Для кого этот навык

  • Python-разработчики, которые хотят понять разницу между asyncio, threading и multiprocessing на практике
  • Backend-разработчики, которым асинхронность нужна как база под FastAPI или Django Channels — сами фреймворки здесь не разбираются
  • Все, кто хочет уверенно отвечать на вопросы по конкурентности на собеседованиях

Что вы получите

Глубокое понимание Как работает async/await под капотом: от итераторов и генераторов до event loop
Сетевой код на asyncio start_server, open_connection, стриминг, backpressure, таймауты и лимиты
Нагрузочное тестирование Прогон через k6 и чтение метрик: RPS, latency p95/p99, ошибки, таймауты
Трамплин в Go Понимание процессов, потоков и кооперативной многозадачности — база для перехода на Go

Программа курса

Итераторы и генераторы

Фундамент, на котором держится асинхронность
  • Асинхронный подход: зачем он нужен и что даёт
  • Итераторы и протоколы итерации в Python
  • Генераторы и корутины: продвинутая механика языка
  • Квиз после каждой темы

Процессы, потоки и многозадачность

Что делает ОС и где проходит граница с Python
  • Процессы и потоки: чем управляет операционная система
  • Многозадачность в Python: кооперативная против вытесняющей
  • Файл-дескриптор: как программа работает с файлами, сокетами и каналами, STDIN/STDOUT/STDERR

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

CPU-bound против IO-bound, event loop и asyncio
  • Асинхронность: планирование, ожидание, отмена
  • CPU-bound против IO-bound: какой подход выбрать под задачу
  • Event loop: архитектура цикла событий и реактор
  • Asyncio: start_server, open_connection, StreamReader/StreamWriter, wait_for, Task
  • Квиз после каждой темы и практическая работа в конце раздела

Вопросы с собеседований

Разбор вопросов по всем темам курса
  • Вопросы по каждой теме курса с эталонными ответами
  • Формулировки уровня Junior+, Middle и Senior

Практика: мини-Nginx на asyncio

Асинхронный reverse proxy, который принимает HTTP-запросы и проксирует их к нескольким upstream-сервисам

  • TCP-сервер на asyncio.start_server и минимальный парсер HTTP/1.1
  • Двунаправленный стриминг без буферизации в памяти, backpressure через drain()
  • Балансировка round-robin, keep-alive, таймауты connect/read/write/total
  • Лимиты на одновременные соединения через Semaphore, логирование и метрики
  • Нагрузочное тестирование через k6: RPS, latency p95/p99, ошибки, распределение по апстримам
  • По желанию — health-checks, retry, circuit breaker, rate limiting, TLS termination
  • Разбор архитектуры и кода с ментором