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