Встречается на 2% собеседований по Python
Как работает GIL
GIL (Global Interpreter Lock) — это мьютекс в CPython, который защищает доступ к объектам Python, предотвращая параллельное выполнение байт-кода несколькими потоками. Это означает, что даже в многопоточных приложениях только один поток может исполняться в любой момент времени.
Основные последствия:
- Потоки Python не выполняются по-настоящему параллельно на многоядерных CPU.
- I/O-операции (сеть, файлы) могут выполняться параллельно, так как GIL освобождается во время ожидания.
- Вычислительные задачи (CPU-bound) не ускоряются многопоточностью.
Пример:
python
import threading
def count():
n = 0
while n < 10_000_000:
n += 1
# Однопоточный вариант
count()
count() # ~0.5s
# Многопоточный вариант
t1 = threading.Thread(target=count)
t2 = threading.Thread(target=count)
t1.start(); t2.start()
t1.join(); t2.join() # ~0.8s (медленнее из-за GIL)Обходные пути:
- Использовать
multiprocessingдля CPU-bound задач. - Переместить тяжелые вычисления в C-расширения (отпуская GIL).
- Использовать асинхронный код (asyncio) для I/O-bound задач.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы