Выбор ответа Senior Память и производительность обновлено
Зачем WeakValueDictionary
Вопрос
Для чего подходит weakref.WeakValueDictionary?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Кеш, записи которого исчезают вместе с объектами. Значения хранятся слабыми ссылками: кеш не продлевает жизнь объектам, и когда последняя обычная ссылка исчезает, запись удаляется.
Варианты ответа
- Словарь, который автоматически ограничивает размер по LRU
- Словарь, безопасный для потоков без внешних блокировок
- Кеш, записи которого исчезают вместе с объектамиправильный ответ
- Словарь, хранящий значения на диске через shelve
Разбор
Значения хранятся слабыми ссылками: кеш не продлевает жизнь объектам, и когда последняя обычная ссылка исчезает, запись удаляется. Так делают реестр «один объект на id», не создавая утечки. LRU-вытеснение это lru_cache или OrderedDict, потокобезопасности и диска здесь нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Память и производительность»
- Встроенные функции против ручного цикла
- Пересечение больших списков id
- Числа Фибоначчи без экспоненты
- Скользящая медиана потока на двух кучах
- Найти пару с суммой быстрее O(n²)
- Циклические ссылки и gc
- Управление памятью в CPython
- Инструменты профилирования Python