如何在Google AppEngine上以字节为单位获取python对象的大小?

时间:2010-08-07 23:10:32

标签: python google-app-engine memcached pickle

我需要计算一些python对象的大小,所以我可以将它们分解并将它们存储在memcache中而不会达到大小限制。

' sizeof ()'似乎不存在于GAE环境中的python对象上,并且sys.getsizeof()也不可用。

GAE本身清楚地检查幕后的大小以强制执行限制。有关如何实现这一目标的任何想法?感谢。

1 个答案:

答案 0 :(得分:8)

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

因为对象的序列化pickle的大小可能与内存中对象的大小完全不同,正如你所看到的(所以我想你应该感谢GAE对于 not 提供sizeof,这会让你误入歧途; - )。