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 格式错误