Встречается на 2% собеседований по Python
Какие ограничения накладывает GIL
GIL (Global Interpreter Lock) в CPython ограничивает параллельное выполнение Python-кода в нескольких потоках. Основные ограничения:
-
Одновременное выполнение только одного потока - GIL позволяет выполнять только один поток Python за раз, даже на многоядерных процессорах.
-
Неэффективность CPU-интенсивных задач - для CPU-зависимых операций многопоточность не даёт прироста производительности.
- Проблемы с долгими операциями - если один поток выполняет долгую операцию (например, вычисления), другие потоки блокируются.
Пример:
python
import threading
def count():
n = 0
while n < 100000000:
n += 1
# Два потока выполняются последовательно из-за GIL
t1 = threading.Thread(target=count)
t2 = threading.Thread(target=count)
t1.start(); t2.start()
t1.join(); t2.join()Обходные пути:
- Использование процессов вместо потоков (модуль
multiprocessing) - Вынос CPU-интенсивных задач в C-расширения
- Использование async/await для I/O-bound задач
- Альтернативные реализации Python (Jython, IronPython) без GIL
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы