3

我知道在 python 中很难看到一个对象的内存使用情况。

对 SciPy 对象(例如稀疏矩阵)执行此操作是否更容易?

4

2 回答 2

5

您可以使用 array.itemsize (包含类型的大小,以字节为单位)和 array.flat 来获取长度:

# a is your array
bytes = a.itemsize * a.size

这不是确切的值,因为它忽略了整个阵列基础设施,但对于大阵列来说,它的价值很重要(我猜你在乎,因为你有一些大的东西)

如果你想在稀疏数组上使用它,你必须修改它,因为稀疏没有 itemsize 属性。您必须访问 dtype 并从中获取项目大小:

bytes = a.dtype.itemsize * a.size

一般来说,我认为评估 python 对象占用的真实内存并不容易...... numpy 数组是一个例外,它只是 C 数组上的一个薄层

于 2012-10-30T16:18:11.480 回答
0

如果你在 IPython 中,你还可以使用它的%whos魔法函数,它可以为你提供有关会话变量的信息,并包括每个变量占用多少 RAM。

于 2012-11-18T05:06:22.577 回答