объем памяти структуры данных Python - PullRequest
16 голосов
/ 12 августа 2010

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

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

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

Моя текущая платформа разработки - CPython 2.6.

1 Ответ

22 голосов
/ 13 августа 2010

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

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

...