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

Как GIL обеспечивает безопасность

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

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

python
counter = 0

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

t1 = threading.Thread(target=increment)
t2 = threading.Thread(target=increment)
t1.start(); t2.start()
t1.join(); t2.join()
print(counter)  # Может быть меньше 200000 из-за race condition

Плюсы GIL:

  • Защищает внутренние структуры CPython от повреждений.
  • Упрощает интеграцию C-расширений.

Минусы:

  • Ограничивает параллелизм в CPU-задачах.
  • Потоки не используют несколько ядер CPU эффективно.

Для истинного параллелизма в Python используют multiprocessing или асинхронные подходы (asyncio).

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

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

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

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