Как получить размер объекта Python в байтах в Google AppEngine? - PullRequest
4 голосов
/ 08 августа 2010

Мне нужно вычислить размеры некоторых объектов Python, чтобы я мог разбить их и сохранить в memcache без ограничения размера.

' sizeof ()' некажется, присутствует на объектах python в среде GAE, и sys.getsizeof () также недоступен.

Сам GAE явно проверяет размеры за кулисами для обеспечения соблюдения ограничений.Есть идеи, как этого добиться?Спасибо.

1 Ответ

8 голосов
/ 08 августа 2010

memcache внутренне и неизменно использует pickle и сохраняет полученную строку, так что вы можете проверить с помощью len(pickle.dumps(yourobject, -1)). Обратите внимание, что sys.getsizeof (для которого требуется 2.6 или выше, именно поэтому он отсутствует в GAE) на самом деле не поможет вам:

>>> import sys
>>> sys.getsizeof(23)
12
>>> import pickle
>>> len(pickle.dumps(23, -1))
5

, поскольку размер сериализованного огурца объекта может сильно отличаться от размера объекта в памяти, как вы можете видеть (поэтому, я думаю, вы должны быть благодарны GAE за не , предлагающих sizeof , который бы сбил вас с пути; -).

...