- Разбираем конкурентность и параллелизм по кирпичикам: как задействуются ядра процессора, как переключаются потоки, и как работают сокеты
- GIL, IO-bound и CPU-bound: что именно блокирует GIL, как он влияет на каждый тип нагрузки и почему CPU-bound задача не ускоряется от async
- Корутины и событийный цикл изнутри: почему это не просто "тупая" очередь задач, и как его не заблокировать
- Корутины, потоки, процессы, воркеры: разница, когда что выбрать
- Tasks и Futures: create_task, получение результата, обработка исключений, отмена и потеря задач
- gather и TaskGroup: как ведёт себя группа задач при падении одной из них и как безопасно запускать набор задач
Домашнее заданиеСравнить последовательный и параллельный запуск корутин, получить блокировку event loop. Поработать с запуском и отменой задач. Вынести блокирующую функцию в поток, CPU-задачу — в процесс.
Результат неделиУложишь в голове, как устроены потоки, процессы, корутины и воркеры, разберёшься с базой асинхронности и, глядя на любую задачу или код, будешь сразу понимать, каким инструментом её решать.