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

Какие плюсы и минусы GIL

Плюсы GIL (Global Interpreter Lock):

  • Упрощает работу с памятью, предотвращая race conditions при управлении объектами Python.
  • Делает однопоточные программы быстрее, так как нет накладных расходов на блокировки.
  • Упрощает интеграцию C-расширений, так как не нужно заботиться о потокобезопасности.

Минусы GIL:

  • Ограничивает параллелизм в CPU-зависимых задачах, так как только один поток исполняет Python-код.
  • Неэффективен для многопоточных вычислений (например, численных расчетов).
  • Усложняет масштабирование на многоядерных системах.

Пример:

python
import threading

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

# Однопоточный вариант работает быстрее из-за GIL
t1 = threading.Thread(target=count)
t2 = threading.Thread(target=count)
t1.start(); t2.start()  # Может быть медленнее, чем синхронный вызов

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

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

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

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

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