Встречается на собеседованиях • сегодня

Какие проблемы решает 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 задачи (потоки все равно эффективны при ожидании операций ввода-вывода).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы