psutil 不显示内存使用的变化
psutil doesn't show changes in memory usage
我正在尝试记录在创建新对象时如何修改内存使用量。
最简单的方案是创建一个 numpy 数组并查看它如何变化。所以我的目标是测量前后的记忆状态,看看它是如何变化的。但是,我得到以下信息:
>>> print(psutil.virtual_memory()); a=np.zeros(1024*1024*10, dtype=np.uint8);print(psutil.virtual_memory())
svmem(total=16482779136, available=7692648448, percent=53.3, used=7079854080, free=2953998336, active=9224863744, inactive=3692097536, buffers=516026368, cached=5932900352, shared=1366462464, slab=387022848)
svmem(total=16482779136, available=7692648448, percent=53.3, used=7079854080, free=2953998336, active=9224863744, inactive=3692097536, buffers=516026368, cached=5932900352, shared=1366462464, slab=387022848)
但是创建numpy数组前后内存状态完全一样
这是一个玩具示例,我希望看到 1010241024=10MB 内存的差异,由 numpy 数组 a
消耗,但它们都一样。
我 运行 它在 Ubuntu 18.04 LTS、Python 3.7.7 和 psutil 5.8.0 上。
提前致谢。
Python 的内存分配很聪明。预先把内存当成堆,按需分配。缺少堆,重新保留内存。我粗略地说。也就是说,一般的方法无法测量记忆的变化。因此,有such a way。你一定很兴奋吧?享受处理原始记忆的乐趣。片段指针的悲伤。太棒了!
我正在尝试记录在创建新对象时如何修改内存使用量。
最简单的方案是创建一个 numpy 数组并查看它如何变化。所以我的目标是测量前后的记忆状态,看看它是如何变化的。但是,我得到以下信息:
>>> print(psutil.virtual_memory()); a=np.zeros(1024*1024*10, dtype=np.uint8);print(psutil.virtual_memory())
svmem(total=16482779136, available=7692648448, percent=53.3, used=7079854080, free=2953998336, active=9224863744, inactive=3692097536, buffers=516026368, cached=5932900352, shared=1366462464, slab=387022848)
svmem(total=16482779136, available=7692648448, percent=53.3, used=7079854080, free=2953998336, active=9224863744, inactive=3692097536, buffers=516026368, cached=5932900352, shared=1366462464, slab=387022848)
但是创建numpy数组前后内存状态完全一样
这是一个玩具示例,我希望看到 1010241024=10MB 内存的差异,由 numpy 数组 a
消耗,但它们都一样。
我 运行 它在 Ubuntu 18.04 LTS、Python 3.7.7 和 psutil 5.8.0 上。
提前致谢。
Python 的内存分配很聪明。预先把内存当成堆,按需分配。缺少堆,重新保留内存。我粗略地说。也就是说,一般的方法无法测量记忆的变化。因此,有such a way。你一定很兴奋吧?享受处理原始记忆的乐趣。片段指针的悲伤。太棒了!