在Python中使用range()时的MemoryError(2.7.4)

时间:2013-10-09 04:52:32

标签: python python-2.7

好的,我在StackOverflow上遇到了很多关于MemoryError的问题,但是找不到满意的答案。我在我的笔记本电脑上使用2GB RAM运行Ubuntu 13.04 Gnome 64位。当我编写以下Python代码时 -

range(987654321/2) 

抛出MemoryError。现在我想这可能是由于笔记本电脑上的可用RAM较少。我怀疑是否取决于是否 -

  • 我有32位或64位版本的Python?
  • 32位还是64位Ubuntu?
  • 如果我在Windows上完全运行它(ActivePython)?

3 个答案:

答案 0 :(得分:3)

如果您使用的是Python2.x,请使用xrange,因为它是一个生成器,不会在内存中创建整个范围,而是根据需要创建每个迭代。

答案 1 :(得分:1)

你要求Python构建一个包含大约5亿个整数的列表。你没有足够的RAM。如果你有足够的RAM,在64位机器上,使用64位Python,它可能会工作。但你仍然不想这样做 - 非常浪费。

答案 2 :(得分:0)

这是一个非常大的范围尝试使用 - 因为它将寻找连续的内存5亿条目,每个多字节最多至少4字节&你有2 GB的东西 - 猜猜 你的RAM用完了!

如果您需要那么大的范围,请使用xrange(493827160)