pythonで大きなデータをpickleで保存しようとすると、
SystemError: error return without exception set
と出て保存ができない。
調べてみると、どうやらpython2系のバグの模様、およそ1.9GB以上のデータを保存しようとするとエラーになる。
これを解決するにはpython3.3に上げるしかない。
他の依存関係があって2.7から動けない場合、解決策としては以下の通り。
- 保存データの分割
- numpy.save
- h5py
- pytables
新しいコマンドを覚えるのが面倒なので、結局分割して対応しました。
(2016/10/22追記)
joblibを使うことでもっと簡単に解決できることが判明。
www.robotech-note.com
(参考)
困った時はgithub or stackoverflowですね。
ndarray dump function (and straight cPickle) fails for large arrays (Trac #1803) · Issue #2396 · numpy/numpy · GitHub
ubuntu - cPickle:SystemError: error return without exception set - Stack Overflow