1

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

range(987654321/2) 

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

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

3 回答 3

3

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

于 2013-10-09T05:01:48.417 回答
1

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

于 2013-10-09T04:58:00.067 回答
0

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

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

于 2013-10-09T05:01:41.277 回答