【发布时间】:2019-02-06 00:50:38
【问题描述】:
我试图在np.fromfile() 的帮助下将一个大文件读入数组,但是,在一定数量的字节之后,它给出了 MemoryError。
with open(filename,'r') as file:
data = np.fromfile(file, dtype=np.uint16, count=2048*2048*63)
data = data.reshape(63, 2048, 2048)
它适用于 2048*2048*63,但不适用于 2048*2048*64。如何调试这个?我想知道这里的瓶颈是什么?
编辑:我在 Windows 10 上运行,RAM 256GB,它是一个独立的脚本,64 位 Python。
Edit2:我遵循了 cmets 的建议,现在在 128*2048*2048 处出现错误,在 127*2048*2048 上工作正常。
【问题讨论】:
-
你有多少内存,你的系统是多少?
-
你有多少内存?您的交换/页面文件有多大?这是独立代码,还是具有其他大量分配的更大程序的一部分?您运行的是 32 位还是 64 位版本的 Python?我们需要更多细节来提供有用的答案。
-
256GB RAM,但 python 无法处理?
-
2048 * 2048 * 2 * 64 = 0.5 GiB。应该不是问题。除非你做几千次pan>
-
作为记录,在 Windows 上的 Ubuntu bash 上运行的 64 位 CPython 3.7.1 上,我无法重现(而且我的 RAM 比你少 远,只有 12国标)。它可以很好地加载和重塑(如果我将其从
np.reshape更改为data.reshape)。虽然这不太重要,但了解您正在运行的操作系统和特定 Python 版本会很有用。