В Python есть GIL — как тогда бэкенд обрабатывает много одновременных запросов?

GIL не мешает конкурентному ожиданию сети и БД. Бэкенд использует async I/O, потоки для блокирующих операций и несколько worker-процессов для параллельного выполнения Python-кода.

Короткий ответ

Что ответить на собеседовании

GIL не мешает конкурентному ожиданию сети и БД. Бэкенд использует async I/O, потоки для блокирующих операций и несколько worker-процессов для параллельного выполнения Python-кода.

Подробный разбор

Ответ с пояснениями

GIL не мешает конкурентному ожиданию сети и БД. Бэкенд использует async I/O, потоки для блокирующих операций и несколько worker-процессов для параллельного выполнения Python-кода.

В обычной сборке CPython один поток исполняет Python-байткод в интерпретаторе в конкретный момент, но при ожидании многих I/O-операций GIL освобождается. Event loop переключается между задачами, когда они добровольно передают управление. Несколько процессов имеют отдельные интерпретаторы и могут использовать разные ядра. CPU-heavy функцию нельзя просто поместить в async def и ожидать ускорения: её выносят в процессы или подходящий нативный код. Реальная конкурентность также ограничена пулами подключений и ресурсами downstream-сервисов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее