Размер памяти структуры данных Python

Как узнать размер памяти структуры данных Python? Я ищу что-то вроде:

sizeof({1:'hello', 2:'world'})

Это здорово, если он пересчитывает каждую вещь рекурсивно. Но даже основной нерекурсивный результат помогает. В основном я хочу получить представление о различных вариантах реализации, таких как tuple v.s. список v.s. класса с точки зрения объема памяти. Это важно, потому что я планирую создать миллионы объектов.

Моя текущая платформа dev - это CPython 2.6.

Ответы

Ответ 1

Посмотрите на функцию sys.getsizeof. Согласно документации, он возвращает размер объекта в байтах, как задается методом объекта __sizeof__.

Как отмечалось в комментарии Daniel, он не рекурсивный; он учитывает только байты, занятые самим объектом, а не другие объекты, к которым он относится. Этот рецепт для рекурсивного вычисления связан с документацией Python 3.