pympler asizeof统计结果与实际内存占用偏差过大的问题咨询
pympler asizeof统计结果与实际内存占用偏差过大的问题咨询
我最近在做Python内存占用的统计测试时,发现pympler库的asizeof工具给出的结果和系统实际显示的内存使用量差距非常悬殊,想请教各位大佬这是什么原因导致的?
测试代码(MWE)
以下是我用来复现问题的最小可执行代码:
from pympler import asizeof from random import randint, choice from string import printable from heapq import heappush ascii = printable[:-5] pq = [] for _ in range(10_000_000): heappush(pq, (randint(0, 31), randint(0, 31), randint(0, 31), ''.join(choice(ascii) for _ in range(16)))) print(asizeof.asizeof(pq))
内存统计结果对比
- pympler asizeof结果:输出为
1,449,096,184字节,约1.4GB; - 系统工具统计结果:
- top工具:显示进程的常驻内存(RES)约为2.7GB;
- /usr/bin/time -v:输出的最大常驻内存大小为
2858616KB(换算后约2.7GB),具体输出:Maximum resident set size (kbytes): 2858616 - Python resource模块:通过以下代码统计:
返回结果为from resource import getrusage, RUSAGE_SELF print(getrusage(RUSAGE_SELF).ru_maxrss * 1024)2927054848字节,约2.9GB。
可以看到asizeof的统计结果和实际系统内存使用量差了一倍左右,请问这是哪里出了问题?
备注:内容来源于stack exchange,提问作者Simd
相关产品推荐
相关产品推荐

