我需要计算一些python对象的大小,所以我可以将它们分解并将它们存储在memcache中而不会达到大小限制。
' sizeof ()'似乎不存在于GAE环境中的python对象上,并且sys.getsizeof()也不可用。
GAE本身清楚地检查幕后的大小以强制执行限制。有关如何实现这一目标的任何想法?感谢。
答案 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,这会让你误入歧途; - )。