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