Python - 内存中的对象大小与磁盘上的对象大小

问题描述 投票:0回答:1

这是我的例子:

import numpy as np
test = [np.random.choice(range(1, 1000), 1000000) for el in range(1,1000)]

这个对象占用内存:

print(sys.getsizeof(test)/1024/1024/1024)
8.404254913330078e-06

像8 KB的东西

当我把它写入磁盘

import pickle
file_path = './test.pickle'
with open(file_path, 'wb') as f:
    pickle.dump(test, f)

它从ls -l命令需要近8GB

有人可以澄清为什么它在内存中占用的空间如此之小以及在磁盘上占用了多少空间?我猜测内存中的数字并不准确。

python file memory pickle disk
1个回答
2
投票

我猜测内存中的数字并不准确。

嗯,这不能解释6个数量级的数量级,对吗? ;)

test是一个Python list实例。 getsizeof会告诉你“指针”的大小,它在你的系统上是64位,还有其他一些属性。但是你需要做更多的事情来获得附加到这个实例的所有东西,检查每个元素(列表在Python中没有严格的类型,所以你不能简单地做size_of_element * len(list)等)。

这是一个资源:https://code.tutsplus.com/tutorials/understand-how-much-memory-your-python-objects-use--cms-25609

这是另一个:How do I determine the size of an object in Python?

© www.soinside.com 2019 - 2024. All rights reserved.