range函数参数较大大时占据大量内存

20200806 -

引言

编写一个编写的时候,发现内存逐步占用越来越大;脚本的目的是利用循环生成大量的数值,然后利用生分成的数值来执行某个函数,大致上的函数伪码就是下面这个:

def some_compute(x):
	pass
max_value = 0xffffffff
for i in range(max_value):
	some_compute(i)

问题

相关的函数并没有什么占用内存的情况,而且其占用的内存应该在函数结束之后也该清理了。所以占用内存的问题就在于range函数这里。之前我记得我也记录过这个问题。然后查找了相关的内容。
文章[1]中介绍,range函数在使用过程中,会的确生成一个相应的数组(不过我当时看到的现象是内存是在逐步提升占用的。)而为了解决这个问题,可以使用xrange函数,该函数不会生成一个列表,而是一个生成器,这也是我后来自己改的一个内容。

注意:python3中已经内部优化了range函数,该函数也会是一个生成器,而且python3中也舍弃了xrange[2]。

所以为了解决上述问题,应该使用xrange函数来生成相应的列表。

def some_compute(x):
	pass
max_value = 0xffffffff
for i in xrange(max_value):
	some_compute(i)

参考文章

[1]python面试题:range与xrange的区别,使用range有什么风险
[2]简单说说range和xrange的区别

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值