【问题标题】:loadmat python memory errorloadmat python内存错误
【发布时间】: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')

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

【问题讨论】:

    标签: python scipy out-of-memory mat-file


    【解决方案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,这可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 2013-12-04
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 2016-05-10
      • 2020-09-06
      相关资源
      最近更新 更多