Размер памяти структуры данных Python
Как узнать размер памяти структуры данных Python? Я ищу что-то вроде:
sizeof({1:'hello', 2:'world'})
Это здорово, если он пересчитывает каждую вещь рекурсивно. Но даже основной нерекурсивный результат помогает. В основном я хочу получить представление о различных вариантах реализации, таких как tuple v.s. список v.s. класса с точки зрения объема памяти. Это важно, потому что я планирую создать миллионы объектов.
Моя текущая платформа dev - это CPython 2.6.
Ответы
Ответ 1
Посмотрите на функцию sys.getsizeof
. Согласно документации, он возвращает размер объекта в байтах, как задается методом объекта __sizeof__
.
Как отмечалось в комментарии Daniel, он не рекурсивный; он учитывает только байты, занятые самим объектом, а не другие объекты, к которым он относится. Этот рецепт для рекурсивного вычисления связан с документацией Python 3.