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

Какую проблему создает GIL в Python

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

Проблемы:

  • Многопоточные программы не ускоряются на многоядерных CPU, так как только один поток исполняется в любой момент.
  • Вычислительные задачи (например, обработка чисел) страдают, в отличие от I/O-операций, где GIL менее критичен.

Пример:

python
import threading

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

# Однопоточный вариант
count()  # ~0.5 сек

# Многопоточный (2 потока)
t1 = threading.Thread(target=count)
t2 = threading.Thread(target=count)
t1.start(); t2.start()
t1.join(); t2.join()  # ~1 сек (нет ускорения)

Обходные пути:

  • Использование процессов (multiprocessing).
  • Вынос тяжелых вычислений в C-расширения (с освобождением GIL).
  • Асинхронность (для I/O).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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