python - 如何在 Python 中获取数字列表的内存印记?

标签 python list memory

如果我有一个包含 float 和大整数混合的列表 L(例如 0.00148185、38749872947239428 等等),我如何确定这个列表在我的计算机上占用了多少内存?

最佳答案

要获取列表本身的大小,请使用 getsizeof :

sys.getsizeof(L)

要获取列表的大小及其包含的所有对象,请使用 recursive sizeof recipe从文档链接:

total_size(L)

但是,这在多个方面具有误导性。

首先,L 中的许多对象可能被其他引用共享。例如,将数字 0 的 300000 个副本添加到列表中不会分配 300000 个新对象;它将重用缓存的 0。如果你只想计算被 L 唯一引用的对象,你可以使用 gc模块来过滤掉任何带有外部推荐人或其他东西的东西,但这会很困难,而且很愚蠢。

其次,这只是告诉你对象使用的内存;它不计算跟踪对象和 malloc 分配器等所涉及的开销,但它确实计算您已经支付的内存,因为它在启动空闲列表中。在脚本中分配 500KB 的对象根本不会增加内存使用量;分配 500MB 可能会使您的实际内存使用量增加 500MB 以上,而您的 VM 使用量甚至更多。除非您知道自己真正要求的是什么,否则没有任何数字对您有意义,包括这个数字。

关于python - 如何在 Python 中获取数字列表的内存印记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712293/

相关文章:

python - Plotly:如何在同一个子图中显示超过 2 个 x 轴标题/范围?

.net - 根据对象的属性之一查找列表中对象的索引

java - 列表项 = new ArrayList() : it does not work

c++ - C++ 中为线程分配的内存

c - C 中变量和内存概念的重用

C - 分配内存,它是如何存储的?

python 2.7 : How to extend a class from an imported base class

python - 如何在 Pygame 中设置 Pong 的碰撞检测

python - 函数返回偏离 0.001 的结果

python - 替换 Python 列表/字典中的值?