【发布时间】:2014-09-22 19:43:38
【问题描述】:
执行以下操作会在我的 Spyder Python IDE 中导致 MemoryError:
>>> from numpy import *
>>> a_flt = ones((7000,7000), dtype=float64)+4
>>> b_flt = ones((7000,7000), dtype=float64)+1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
MemoryError
>>>
这很奇怪,因为 Spyder 状态栏中的内存使用情况显示只有大约。我使用了 25% 的内存。此外,当在标准 Python IDE GUI 中生成更多数量的大型 7000*7000 数组时,一切正常。
>>> from numpy import *
>>> a_flt = ones((7000,7000), dtype=float64)+4
>>> b_flt = ones((7000,7000), dtype=float64)+1
>>> c_flt = ones((7000,7000), dtype=float64)+1
>>> d_flt = ones((7000,7000), dtype=float64)+1
>>> e_flt = ones((7000,7000), dtype=float64)+1
即使创建了 5 个浮点数组,内存需求也仅占我总内存 16GB 的三分之一左右。所以这不可能是一个真正的内存问题。我在 spyder google 组https://groups.google.com/forum/#!msg/spyderlib/qE9tiriT91s/0x3s2Aw-efMJ 中发现了一个关于这个问题的类似问题,但是没有提供答案。如果有人可以帮助我解决这种自相矛盾的情况,那就太好了。
提前致谢,
帕特里克
【问题讨论】:
-
我无法在使用 Spyder 2.3.0 的 Debian Linux 上重现您的问题。
-
(Spyder dev here) 你的 Spyder 版本是多少?和您的平台(Windows、Linux、Mac)?
-
@Carlos Cordoba:我的 Spyder 版本是 2.2.5。我正在使用 Windows 7
-
现在我在 Windows 上使用 Python 2.7.6 32bits、Qt 4.8.4、PyQt4 (APIv2) 4.9.6 将 Spyder 更新到了 2.3.1 版本,即使在尝试创建第一个包含 7000*7000 个浮点元素的数组 (a_flt)!这里完全有问题!
-
32 位 Python?你永远不会达到 16GB,你受到 4GB 可寻址内存的限制。
标签: python memory-management out-of-memory spyder