不幸的是,这是不可能的,但是有很多近似答案的方法:
对于非常简单的对象(例如,整数,字符串,浮点数,双精度数),它们或多或少地表示为简单的C语言类型,您可以像John Mulder的解决方案那样简单地计算字节数。
对于更复杂的对象,一个很好的近似方法是使用cPickle.dumps将对象序列化为字符串。字符串的长度很好地近似于存储对象所需的内存量。
解决方案2有一个很大的障碍,那就是对象通常包含对其他对象的引用。例如,字典包含字符串键和其他对象作为值。这些其他对象可能是共享的。由于pickle总是尝试对对象进行完整的序列化,因此它总是会高估存储对象所需的内存量。