我试图记录在创建新对象时如何修改内存使用情况。
最简单的情况是创建一个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数组之前和之后,内存状态完全相同。
这是一个玩具示例,在这个示例中,我希望看到numpy数组10_1024_1024=10MB使用的内存的差异,但它们是相同的。
我在Ubuntu18.04LTS、Python3.7.7和psutil 5.8.0上运行它。
提前谢谢。
发布于 2020-12-21 15:06:02
Python的内存分配是明智的。将内存预先保存为堆,并分配所需的内容。缺了堆,再保持记忆。我大概是这么说的。换句话说,一般的方法不能测量记忆的变化。因此,存在这样一种方式。你一定很兴奋吧?享受处理原始记忆。碎片指针的悲伤。太棒了!
https://stackoverflow.com/questions/65400972
复制相似问题