【python】Generator

Generator的理解

本篇博文主要围绕两个知识点展开:

  1. what is the generator
  2. why use generator

1. what is the generator

generator是一个生成器,那你可能会问,什么又是生成器那?

关于生成器,举个例子:你家要开包子铺,买了一个制作包子的机器,想要几个包子就用这个机器制作几个包子,而这个制作包子的机器就是一个生成器。

生成器:可以使用next(),生成一个个东西;是一个iterable(是一个for循环,可以被遍历的东西)。

import memory_profiler as mem # 查看内存大小
# 数字大一点
yi = 100000000
nums = list(range(10000000))
print(f'内存前:{mem.memory_usage()}')
# squre_nums = [n*n*yi for n in nums] # 直接生成一千万个
squre_nums = (n*n*yi for n in nums) # 需要的时候,调用next(),直至生成一千万个,并没有真正的在内存中生成
print(squre_nums)
print(f'内存后:{mem.memory_usage()}')

在这里插入图片描述

2. why ues generator

简而言之,当列表很大的时候,generator阿三找需要给你产生,并不会一次性生成而占用大量内存。例如前面我们距离制作包子的以下就是一个很好的例子:

import memory_profiler as mem # 查看内存大小
# 数字大一点
yi = 100000000
nums = list(range(10000000))
print(f'内存前:{mem.memory_usage()}')
squre_nums = [n*n*yi for n in nums] # 直接生成一千万个
# squre_nums = (n*n*yi for n in nums) # 需要的时候,调用next(),直至生成一千万个,并没有真正的在内存中生成
print(f'内存后:{mem.memory_usage()}')

在这里插入图片描述
当使用generator时:

import memory_profiler as mem # 查看内存大小
# 数字大一点
yi = 100000000
nums = list(range(10000000))
print(f'内存前:{mem.memory_usage()}')
squre_nums = (n*n*yi for n in nums) # 需要的时候,调用next(),直至生成一千万个,并没有真正的在内存中生成
print(f'内存后:{mem.memory_usage()}')

在这里插入图片描述

3. 总结

总结一句话就是,使用generator可以节约内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贾继康

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

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

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

打赏作者

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

抵扣说明:

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

余额充值