获取对象所占内存

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

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

 

发布了38 篇原创文章 · 获赞 28 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览