3

Pythonは初めてで、サイズ850Mのmatlab構造体をPythonにインポートしたいと思います。「loadmat」を使用していますが、メモリエラーが発生します。

self._matrix_reader.array_from_header(header、process)を返します
  scipy.io.matlab.mio5_utils.VarReader5.array_from_header(scipy \ io \ matlab \ mio5_utils.c:5401)のファイル "mio5_utils.pyx"、行624
  scipy.io.matlab.mio5_utils.VarReader5.array_from_header(scipy \ io \ matlab \ mio5_utils.c:4849)のファイル "mio5_utils.pyx"、行653
  scipy.io.matlab.mio5_utils.VarReader5.read_real_complex(scipy \ io \ matlab \ mio5_utils.c:5578)のファイル "mio5_utils.pyx"、行706
  scipy.io.matlab.mio5_utils.VarReader5.read_numeric(scipy \ io \ matlab \ mio5_utils.c:3439)のファイル "mio5_utils.pyx"、行424
  scipy.io.matlab.mio5_utils.VarReader5.read_element(scipy \ io \ matlab \ mio5_utils.c:3164)のファイル "mio5_utils.pyx"、行360
  scipy.io.matlab.streams.GenericStream.read_string(scipy \ io \ matlab \ streams.c:1408)のファイル "streams.pyx"、76行目
MemoryError

3.5GのRAMを搭載したWindowsXPでPython3.2を実行しています。これが私のコードです:

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

私を助けて、これを修正するために私が何をすべきか教えていただけませんか?

4

1 に答える 1

3

おそらく32ビットPythonを使用しています。すべての32ビットプログラムの最大制限(この問題は実際にはPythonやScipyとは関係ありません)は2GBです---マシンにインストールしたメモリの量は関係ありません。実際には、仮想メモリの断片化が原因で、大きなオブジェクトの割り当てはすでに早く失敗し始めます(経験則として、最大800 MBが予想されるようです)。

解決策は、32ビットのPythonではなく64ビットのPythonを使用することです。このためには、Windows7やLinuxなどの64ビットオペレーティングシステムが必要です。

ただし、32ビットバージョンのWindows XPを使い続けている場合は、32ビットシステムで32ビットメモリの制限を最大3 GBに上げるためのトリックがいくつかあります。これは、ここで役立つ場合があります。

于 2012-11-12T09:47:57.103 に答える