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

Для чего внедрили GIL в Python

GIL (Global Interpreter Lock) — это механизм, который позволяет только одному потоку выполнять байт-код Python в любой момент времени. Основные причины его внедрения:

  1. Упрощение управления памятью — CPython использует подсчёт ссылок для сборки мусора. Без GIL возможны race condition при изменении счётчиков ссылок.
  2. Совместимость с C-расширениями — многие библиотеки (например, NumPy) полагаются на потокобезопасность GIL.
  3. Исторические причины — в 90-е многопроцессорные системы были редкостью, и GIL упрощал реализацию интерпретатора.

Пример проблемы без GIL:

python
import threading

counter = 0

def increment():
    global counter
    for _ in range(100000):
        counter += 1

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 не мешает многопоточности для I/O-bound задач, но ограничивает CPU-bound задачи. Для последних лучше использовать multiprocessing или асинхронность.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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