python 2简单的循环高内存使用

时间:2017-08-20 17:55:14

标签: python python-2.7 python-3.x memory-management iterator

使用Python 2.7和3.5进行测试

for i in range(0, 1000000000):
    pass

当我用python3运行此代码时一切正常(内存使用量少于3MB)

但是python2的内存使用量是32GB(我的服务器只有32GB的ram)

如何解决Python 2.7的问题?

1 个答案:

答案 0 :(得分:3)

Python 2.7中的

range和Python 3中的range是不同的功能。在Python 3中,它返回一个迭代器,它逐个提供值。在Python 2.7中,它返回一个数组,必须为其分配一些内存。它可以通过在Python 2.7版中使用xrange函数来解决。

Python 2.7.12
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> xrange(10)
xrange(10)
>>> iterator = iter(xrange(10))
>>> iterator.next()
0
>>> iterator.next()
1
>>> iterator.next()
2