loadmat python内存错误

Posted

技术标签:

【中文标题】loadmat python内存错误【英文标题】:loadmat python memory error 【发布时间】:2012-10-31 12:19:24 【问题描述】:

我是 Python 新手,我想向其中导入一个大小为 850M 的 matlab 结构。我使用“loadmat”,但出现内存错误:

return self._matrix_reader.array_from_header(header, process) 文件“mio5_utils.pyx”,第 624 行,在 scipy.io.matlab.mio5_utils.VarReader5.array_from_header (scipy\io\matlab\mio5_utils.c:5401) 文件“mio5_utils.pyx”,第 653 行,在 scipy.io.matlab.mio5_utils.VarReader5.array_from_header (scipy\io\matlab\mio5_utils.c:4849) 文件“mio5_utils.pyx”,第 706 行,在 scipy.io.matlab.mio5_utils.VarReader5.read_real_complex (scipy\io\matlab\mio5_utils.c:5578) 文件“mio5_utils.pyx”,第 424 行,在 scipy.io.matlab.mio5_utils.VarReader5.read_numeric (scipy\io\matlab\mio5_utils.c:3439) 文件“mio5_utils.pyx”,第 360 行,在 scipy.io.matlab.mio5_utils.VarReader5.read_element (scipy\io\matlab\mio5_utils.c:3164) 文件“streams.pyx”,第 76 行,在 scipy.io.matlab.streams.GenericStream.read_string (scipy\io\matlab\streams.c:1408) 内存错误

我在具有 3.5G RAM 的 Windows XP 上运行 python 3.2。这是我的代码:

from scipy.io import matlab as mio
mat = mio.loadmat(DIR + '/input.mat')

您能帮我并告诉我应该怎么做才能解决这个问题吗?

【问题讨论】:

【参考方案1】:

您可能正在使用 32 位 Python。所有 32 位程序的最大限制(这个问题实际上与 Python 或 Scipy 无关)是 2GB --- 你在机器上安装了多少内存并不重要。在实践中,大型对象的分配已经开始失败,due to virtual memory fragmentation(根据经验,大约 800 MB 似乎是预期的)。

解决方案是使用 64 位 Python 而不是 32 位 Python。为此,您需要一个 64 位操作系统,例如 Windows 7 或 Linux。

但是,如果您坚持使用 32 位版本的 Windows XP,有 some tricks 在 32 位系统上将 32 位内存限制提高到 3GB,这可能会有所帮助。

【讨论】:

以上是关于loadmat python内存错误的主要内容,如果未能解决你的问题,请参考以下文章

Scipy IO Loadmat 错误:ValueError:Mat 4 mopt 格式错误

python内存错误(有足够的可用内存)

CUDA 错误:内存不足 - Python 进程使用所有 GPU 内存

Python MeanShift 内存错误

Python,内存错误,csv文件太大[重复]

Python 转换为数组时出现内存错误