Python - 对象在内存中与在磁盘上的大小
Python - size of object in memory vs. on disk
这是我的例子:
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
有人能解释一下为什么 space 占用的内存如此之少而占用磁盘的空间却如此之大吗?我猜记忆中的数字不准确。
I am guessing in memory numbers are not accurate.
好吧,这不能解释 6 个数量级的大小,对吧? ;)
test
是一个 Python list
实例。 getsizeof
会告诉你 "a pointer" 的大小,它在你的系统上是 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?
这是我的例子:
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
命令
有人能解释一下为什么 space 占用的内存如此之少而占用磁盘的空间却如此之大吗?我猜记忆中的数字不准确。
I am guessing in memory numbers are not accurate.
好吧,这不能解释 6 个数量级的大小,对吧? ;)
test
是一个 Python list
实例。 getsizeof
会告诉你 "a pointer" 的大小,它在你的系统上是 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?