我正在使用Python 2.7.6。在Windows 32位机器上。使用numpy相对较快地创建许多大型python数组会导致内存错误。在下面的示例中,我在尝试创建第四个数组后已经收到内存错误。如下所示,每个阵列大约需要400 MB。出现内存错误虽然我只使用了21%的内存,总可用内存仍然大约为14 GB。
>>> import psutil
>>> psutil.virtual_memory()
svmem(total=17132158976L, available=14693892096L, percent=14.2, used=2438266880L
, free=14693892096L)
>>> from numpy import *
>>> a_flt = ones((7000,7000))
>>> psutil.virtual_memory()
svmem(total=17132158976L, available=14273409024L, percent=16.7, used=2858749952L
, free=14273409024L)
>>> b_flt = ones((7000,7000))
>>> psutil.virtual_memory()
svmem(total=17132158976L, available=13882269696L, percent=19.0, used=3249889280L
, free=13882269696L)
>>> c_flt = ones((7000,7000))
>>> psutil.virtual_memory()
svmem(total=17132158976L, available=13490208768L, percent=21.3, used=3641950208L
, free=13490208768L)
>>> d_flt = ones((7000,7000))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\numpy\core\numeric.py", line 178, in ones
a = empty(shape, dtype, order)
MemoryError
有人知道这是什么原因吗?我也经历过使用不同类型的IDE(IDLE,SPYDER),错误有时会更早或更晚。例如,在SPYDER中,错误已经在第二个数组之后引起!