我知道在python中很难看到对象的内存使用情况。
为SciPy对象(例如,稀疏矩阵)执行此操作是否更容易?
答案 0 :(得分:5)
你可以使用array.itemsize(包含类型的大小,以字节为单位)和array.flat来获取长度:
# a is your array
bytes = a.itemsize * a.size
它不是确切的值,因为它忽略了整个阵列基础设施,但对于大阵列而言,重要的是它的价值(我猜你关心因为你有一些大的东西)
如果要在稀疏数组上使用它,则必须对其进行修改,因为稀疏没有itemsize属性。您必须访问dtype并从中获取itemsize:
bytes = a.dtype.itemsize * a.size
一般来说,我认为评估python对象占用的实际内存并不容易...... numpy数组是一个例外,只是C数组上的一个薄层
答案 1 :(得分:0)
如果你在IPython中,你也可以使用它的%whos
magic function,它会为你提供有关会话变量的信息,并包含每个内存的RAM数量。