使用Python 2.7和3.5进行测试
for i in range(0, 1000000000):
pass
当我用python3运行此代码时一切正常(内存使用量少于3MB)
但是python2的内存使用量是32GB(我的服务器只有32GB的ram)
如何解决Python 2.7的问题?
答案 0 :(得分:3)
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