Вопрос на собеседовании · Python-разработчик
Что такое GIL и как он влияет на многопоточность?
Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.
GIL в CPython — это блокировка, из-за которой в одном процессе только один поток одновременно исполняет байткод Python. Она упрощает защиту внутренних структур интерпретатора, но ограничивает параллелизм потоков для вычислений на чистом Python.
Для I/O-bound задач потоки остаются полезны: во время ожидания сети или диска GIL освобождается. Для CPU-bound работы обычно выбирают несколько процессов, нативные библиотеки, освобождающие GIL, либо измеряют возможности используемой версии и сборки Python.
01 · Структура ответа
Что важно сказать интервьюеру
Начните с определения, затем объясните механизм и закончите примером из практики. Для полного ответа раскройте эти тезисы:
02 · Пример
Как объяснить на практике
Сервис, который параллельно вызывает несколько внешних API, может выиграть от потоков или asyncio. Обработка большого массива изображений на Python-коде чаще требует пула процессов или библиотеки с нативной реализацией.
Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.
03 · Ошибки
Чего избегать в ответе
04 · Углубление
Что могут спросить следом
- Когда потоки в Python всё-таки полезны?
- Чем multiprocessing отличается от threading?
- Как GIL связан с asyncio?
Практика ответа
Ответьте вслух, а не про себя
Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с опорой.
Mira