Встречается на собеседованиях • сегодня
Какие проблемы решает 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
интервью вопросы и ответы