Выбор ответа Senior Память и производительность обновлено

Зачем WeakValueDictionary

Вопрос

Для чего подходит weakref.WeakValueDictionary?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Кеш, записи которого исчезают вместе с объектами. Значения хранятся слабыми ссылками: кеш не продлевает жизнь объектам, и когда последняя обычная ссылка исчезает, запись удаляется.

Варианты ответа

  1. Словарь, который автоматически ограничивает размер по LRU
  2. Словарь, безопасный для потоков без внешних блокировок
  3. Кеш, записи которого исчезают вместе с объектамиправильный ответ
  4. Словарь, хранящий значения на диске через shelve

Разбор

Значения хранятся слабыми ссылками: кеш не продлевает жизнь объектам, и когда последняя обычная ссылка исчезает, запись удаляется. Так делают реестр «один объект на id», не создавая утечки. LRU-вытеснение это lru_cache или OrderedDict, потокобезопасности и диска здесь нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.