这是我的例子:
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
有人可以澄清为什么它在内存中占用的空间如此之小以及在磁盘上占用了多少空间?我猜测内存中的数字并不准确。
我猜测内存中的数字并不准确。
嗯,这不能解释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