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

Для чего нужен GIL

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

  1. Потокобезопасности — упрощает управление памятью, так как гарантирует, что только один поток выполняет байт-код Python в один момент времени.
  2. Упрощение реализации — CPython использует подсчёт ссылок для управления памятью, и GIL защищает от race conditions при изменении счётчиков.

Недостатки:

  • Многопоточные программы на Python не могут эффективно использовать многоядерные процессоры для CPU-задач.

Пример:

python
import threading

def count():
    n = 0
    for _ in range(10_000_000):
        n += 1

# Запуск в одном потоке
count()  # ~0.5s  

# Запуск в двух потоках (GIL мешает ускориться)
t1 = threading.Thread(target=count)
t2 = threading.Thread(target=count)
t1.start(); t2.start()  # ~1s (а не 0.5s)

Решение: Для CPU-задач используй multiprocessing или C-расширения (например, NumPy).

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

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

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

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