Что такое GIL в Python и как он влияет на многопоточность и CPU-bound задачи?

В обычной сборке CPython GIL позволяет только одному потоку исполнять Python-код в одном интерпретаторе одновременно. Поэтому потоки обычно не ускоряют чистые CPU-bound вычисления.

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

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

В обычной сборке CPython GIL позволяет только одному потоку исполнять Python-код в одном интерпретаторе одновременно. Поэтому потоки обычно не ускоряют чистые CPU-bound вычисления.

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

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

В обычной сборке CPython GIL позволяет только одному потоку исполнять Python-код в одном интерпретаторе одновременно. Поэтому потоки обычно не ускоряют чистые CPU-bound вычисления.

Потоки остаются полезны для I/O, поскольку блокировка освобождается при многих операциях ожидания. Некоторые C-расширения также освобождают GIL во время вычислений. Для параллельного CPU-кода используют процессы или подходящие нативные библиотеки; учитывают стоимость передачи данных. GIL не заменяет защиту общих бизнес-инвариантов от гонок. Существуют отдельные free-threaded-сборки CPython без привычного GIL, поэтому утверждение «Python всегда однопоточный» неверно; важно назвать реализацию, сборку и характер работы.

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

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

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

Подробнее