如何在Google AppEngine上获取python对象的大小(以字节为单位)?
问题内容:
我需要计算一些python对象的大小,因此我可以将它们分解并存储在内存缓存中,而不会达到大小限制。
GAE环境中的python对象上似乎没有’ sizeof ()’,并且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,这会让您误入歧途;- )。