Bas*_*asj 6 python memory-management numpy
此代码生成MemoryError:
from pylab import complex128
import numpy
x = numpy.empty(100000000, dtype=complex128) # 100 millions complex128
Run Code Online (Sandbox Code Playgroud)
我有8 GB RAM的Win7 64(运行此代码时至少5.3 GB免费).我正在使用Python 2.7(Anaconda),我认为它是32位版本.即使有32位,我们也应该可以处理1.6 GB!
你知道怎么解决这个问题吗?
PS:我期望一个包含1亿个项目的数组,每个项目使用16个字节(128位)来使用16*100百万= 1.6 GB.这证实了:
x = numpy.empty(1000000, dtype=complex128) # 1 million here
print x.nbytes
>>> 16000000 # 16 MB
Run Code Online (Sandbox Code Playgroud)
Python 64bit解决了这个问题.
甚至可以创建超过5 GB的单个阵列.
注意:当我创建一个应该使用1 600 000 000字节的complex128数组(在一个数组中有1亿个项目)时,实际的内存使用量并不是"更多":1 607 068 KB ...