You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python变量内存占用疑问:numpy列表t的内存计算问题

Python变量内存占用计算问题

为什么sys.getsizeof(t)结果远低于实际值?

sys.getsizeof()只能计算列表容器本身的内存,而列表t里存的是指向每个numpy数组的引用(指针),不是数组的实际数据。64位系统下每个指针占8字节,1000个指针就是8000字节,再加上列表自身的管理开销,就得到了你看到的8856字节——这部分和数组里的实际数据完全无关。

变量t的实际内存占用是多少?

每个np.random.rand(10000)生成的是float64类型的数组,每个元素占8字节:

  • 单个数组内存:10000 * 8 = 80000 字节 ≈78.125 KB
  • 1000个数组总数据内存:80000 * 1000 = 80,000,000 字节 ≈76.29 MB
    如果加上列表容器本身的8KB左右,总内存约76.3MB。

正确的计算方法

可以遍历列表里的每个numpy数组,用nbytes属性获取单个数组的实际数据大小,再求和加上列表本身的大小:

import sys
import numpy as np

t = [np.random.rand(10000) for _ in range(1000)]
# 计算总内存:列表容器大小 + 所有数组数据大小
total_memory = sys.getsizeof(t) + sum(arr.nbytes for arr in t)
# 转换为MB并打印
print(f"总内存占用:{total_memory / (1024 * 1024):.2f} MB")

内容的提问来源于stack exchange,提问作者nop nop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:52:07