从一个小实验说迭代器的应用意义

网络上已经有无数文章或教程介绍迭代器,本文不涉及迭代器用法,主要通过一个实验效果,来说明它的应用意义。

实验的代码:
#迭代器效果演示
gen = (x for x in range(30000000))
for i in gen:
     print(i)
     
#列表效果演示
lis = [x for x in range(30000000)]
for i in lis:
    print(i)
分别运行两段代码,并观察系统相关信息

A:使用迭代器的效果:
内存稳定在41%左右


使用迭代器的效果

B:使用列表的效果:
内存稳定在50%左右


使用列表的效果
1、测试的系统内存是8G,也就是说,使用列表多用了近10%,约1G的内存。
2、调整代码,继续增大循环次数,列表方式占用的内存还会继续增加,直到内存耗尽,造成系统卡顿甚至死机。而迭代器方式,内存占用没有变化,完美解决了内存占用的问题。
所以效果显而易见,就是解决内存占用的问题。
新手在平常的语法、算法练习,数据量一般比较小,效果差异并不明显,所以对其实际应用的理解会略显困难。
运维、大数据分析等等实际项目中,这种情况是很常见的,反而很容易明白其应用意义。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 1 场景问题# 1.1 工资表数据的整合## 考虑这样一个实际应用:整合工资表数据。 这个项目的背景是这样的,项目...
    七寸知架构阅读 2,584评论 0 53
  • 今天我是第一个来到学校为期权学校的一个人,也没有只有我和老师,我拿起书做起题来做完题,我很我得了阿迪王,真开心,我...
    程蓝熙阅读 138评论 0 0
  • 鸡蛋炒面 在家的时候,父母常做的臊子面,土豆萝卜豆腐经典搭配 超市买的凉皮,味道还不错,再搭配些面筋,豆芽味道会更好
    小凌风阅读 235评论 0 0
  • 狂喜,绝对的狂喜!大吉在例行工作中突然发现了小倪的名字,她要去某地参观。大吉顿时产生了一起去的想法,找了许多冠冕堂...
    nybeloved阅读 187评论 0 0