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

Как задействован GIL при уничтожении объектов в Python

GIL (Global Interpreter Lock) играет ключевую роль при уничтожении объектов в Python, особенно в контексте сборки мусора. В CPython GIL защищает процесс освобождения памяти от race conditions, так как счетчики ссылок (refcount) и механизмы сборки мусора не являются потокобезопасными.

При уничтожении объекта:

  1. GIL блокируется перед изменением счетчика ссылок.
  2. Если счетчик достигает нуля, вызывается деструктор (__del__) и освобождается память.
  3. GIL разблокируется после завершения операции.

Пример:

python
import threading

class Temp:
    def __del__(self):
        print("GIL locked during destruction")

obj = Temp()
del obj  # Уничтожение под защитой GIL

Важно: GIL не предотвращает все проблемы с памятью - циклические ссылки требуют дополнительного механизма (GC), который также работает под GIL.

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

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

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

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