Python np.fromfile()方法有内存限制吗?

Python np.fromfile()方法有内存限制吗?,python,numpy,memory,Python,Numpy,Memory,我试图在np.fromfile()的帮助下将一个大文件读入数组,但是,经过一定数量的字节后,它会给出MemoryError 打开(文件名,'r')作为文件的: data=np.fromfile(文件,dtype=np.uint16,count=2048*2048*63) 数据=数据。重塑(6320482048) 它适用于2048*2048*63,但不适用于2048*2048*64。如何调试这个?我想知道这里的瓶颈是什么 编辑:我在Windows10上运行,内存256GB,它是一个独立的脚本,6

我试图在
np.fromfile()
的帮助下将一个大文件读入数组,但是,经过一定数量的字节后,它会给出MemoryError

打开(文件名,'r')作为文件的
:
data=np.fromfile(文件,dtype=np.uint16,count=2048*2048*63)
数据=数据。重塑(6320482048)
它适用于2048*2048*63,但不适用于2048*2048*64。如何调试这个?我想知道这里的瓶颈是什么

编辑:我在Windows10上运行,内存256GB,它是一个独立的脚本,64位Python


Edit2:我根据评论中的建议,现在得到的错误是128*2048*2048,可以与127*2048*2048配合使用。

尽管您相信,您已经在64位操作系统上安装了32位版本的Python,这意味着在用户模式下虚拟地址空间仅限于2GB,并且,由于地址空间碎片,分配GB或GB以上的连续块的尝试很容易失败

赠品是您的
sys.maxsize
,它只是Python构建中C
ssize\t
可表示的最大值
2147483647
对应于
2**31-1
,这是32位Python上的期望值。64位构建将报告
9223372036854775807
2**63-1


卸载32位版本的Python和(查找标签为x86-64而不是x86的安装程序;文件名将包括
amd64
)。令人烦恼的是,默认为Windows提供32位版本,因此您必须向下滚动到特定版本下载页面的链接,单击最新版本,然后向下滚动到操作系统和Bitedness的完整列表,并进行适当选择。

您有多少RAM以及系统的位数是多少?您有多少RAM?交换/页面文件有多大?这是独立的代码,还是具有其他大型分配的大型程序的一部分?您运行的是32位还是64位版本的Python?我们需要更多的细节来提供有用的答案。256GBRAM,但python无法处理这个问题?2048*2048*2*64=0.5Gib。这不应该是个问题。除非记录在案,在64位的CPython 3.7.1上,运行在Windows上的Ubuntu bash上,否则我无法复制(而且我的RAM比你少得多,只有12GB)。它加载和重塑的效果很好(如果我将其从
np.restrape>更改为
data.restrape
)。虽然这不太重要,但了解您正在运行的操作系统和特定的Python版本会很有用。你们是对的,我错过了错误的Python解释器。幸运的是,我很早就发现了。谢谢大家。