Встречается на 1% собеседований по Python
Какие проблемы решает GIL
GIL (Global Interpreter Lock) в CPython решает проблему управления памятью в многопоточных программах. Он предотвращает race conditions при доступе к объектам Python, так как только один поток может выполнять Python-код в любой момент времени.
Основные задачи GIL:
- Безопасность памяти: Исключает одновременное изменение объектов разными потоками.
- Упрощение реализации CPython: Уменьшает сложность управления ссылочными счетчиками (reference counting).
Пример проблемы без GIL:
python
import threading
counter = 0
def increment():
global counter
for _ in range(100000):
counter += 1 # Без GIL здесь возможен race condition
threads = [threading.Thread(target=increment) for _ in range(10)]
for t in threads:
t.start()
for t in threads:
t.join()
print(counter) # Может быть меньше 1_000_000 из-за race conditionНедостатки GIL:
- Ограничивает параллелизм CPU-bound задач (решается через процессы или альтернативные интерпретаторы).
- Не влияет на I/O-bound задачи (потоки все равно эффективны при ожидании операций ввода-вывода).

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