生成器和列表的消耗内存对比

在处理大数据时,生成器相比列表能显著减少内存开销。列表会存储所有数据,消耗大量内存,而生成器仅保存生成规则,按需生成数据,从而节省资源。对于100万条数据,列表消耗约45M内存,而生成器保持在4.6M,证明了生成器在处理大数据时的优势。
摘要由CSDN通过智能技术生成

前言

  • 生成器和列表都可以用于数据的存储,但是在处理大数据量的时候,列表会占用很多的内存资源,而生成器不会,所以在处理大数据量时,可以尽量使用生成器,减少内存开销。下面展示一下生成器和列表在处理大数据量时,所消耗的内存开销。

生成大数据时的列表内存开销

# 列表  
# li = [i for i in range(1000000)]  
# 避免程序运行完结束
input()

首先看一下不执行生成数据时内存的开销:
在这里插入图片描述

可以看到此时的内存开销是4.6M。接着我们生成100W的数据量看下内存开销

# 列表  
li = [i for i in range(1000000)]  
# 避免程序运行完结束
input()

我们可以看到用列表生成一百万数据时,内存的开销为45M,是之前内存消耗的近10倍
在这里插入图片描述


生成大数据时的生成器内存开销

# 生成器  
li = (i for i in range(1000000))
# 避免程序运行完结束
input()

我们可以看到用生成器来生成一百万数据时,内存消耗是4.6M,和之前不生成数据时,消耗的内存资源是一样的。
在这里插入图片描述


总结

  • 通过对比生成器和列表生成大数据量的数据时消耗的内存资源,我们可以清晰的看出,用生成器来生成大数据量的数据,生成器的资源消耗是列表的N倍,极大程度上较少了电脑的内存开销。
  • 差生这种极大差异的原理是:列表是将所生成的数据全部存储在内存之中,所以暂用了极大的内存资源;而生成器内部不直接保存数据,只存储生成数据的规则(算法),只有在用next去获取数据时才会生成数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值