好的,我在StackOverflow上遇到了很多关于MemoryError的问题,但是找不到满意的答案。我在我的笔记本电脑上使用2GB RAM运行Ubuntu 13.04 Gnome 64位。当我编写以下Python代码时 -
range(987654321/2)
抛出MemoryError。现在我想这可能是由于笔记本电脑上的可用RAM较少。我怀疑是否取决于是否 -
答案 0 :(得分:3)
如果您使用的是Python2.x,请使用xrange,因为它是一个生成器,不会在内存中创建整个范围,而是根据需要创建每个迭代。
答案 1 :(得分:1)
你要求Python构建一个包含大约5亿个整数的列表。你没有足够的RAM。如果你有足够的RAM,在64位机器上,使用64位Python,它可能会工作。但你仍然不想这样做 - 非常浪费。
答案 2 :(得分:0)
这是一个非常大的范围尝试使用 - 因为它将寻找连续的内存5亿条目,每个多字节最多至少4字节&你有2 GB的东西 - 猜猜 你的RAM用完了!
如果您需要那么大的范围,请使用xrange(493827160)
。