无法在Python中分配1.6 GB

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)

Bas*_*asj 5

Python 64bit解决了这个问题.

甚至可以创建超过5 GB的单个阵列.

注意:当我创建一个应该使用1 600 000 000字节的complex128数组(在一个数组中有1亿个项目)时,实际的内存使用量并不是"更多":1 607 068 KB ...