获取对象所占内存

1、问题提出

  • 在对算法进行实现的过程中往往会遇到特征矩阵的构建
  • 但矩阵的构建往往会导致内存占用过大,甚至内存溢出

2、问题解决

  • 尝试多种特征矩阵构建的方式,计算每种方式所占的内存
  • 实例验证生成器对象与列表生成式对象所占的内存:
# 创建生成器方法一:将列表生成式的[]换位()
L = [x**2 for x in range(5)]
G = (x**2 for x in range(5)) # 因为生成器是可迭代对象,因此可以采用for循环对其进行迭代
# 创建生成器方法二:yield
def fib(times):
    a, b = 0, 1
    n = 0
    while n <= times:
        yield b # 注意yield将变量b的一系列值作为生成器。
#         b = a + b
#         a = b
        b, a = a + b, b
        n += 1
    return "done"
for i in fib(5):
    print(i)

测试: 

import sys
print(sys.getsizeof(G))
print(sys.getsizeof(L))
import numpy as np
nparray = np.array(L)
print(nparray)
print(sys.getsizeof(nparray))

结果:

88
128
[ 0  1  4  9 16]
116

实验结果表明生成器对象所占的内存要比列表生成式要小许多。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HPF4212

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值