pythonのpickleでSystemError: error return without exception setが出る原因

pythonで大きなデータをpickleで保存しようとすると、

SystemError: error return without exception set

と出て保存ができない。
調べてみると、どうやらpython2系のバグの模様、およそ1.9GB以上のデータを保存しようとするとエラーになる。
これを解決するにはpython3.3に上げるしかない。
他の依存関係があって2.7から動けない場合、解決策としては以下の通り。

  1. 保存データの分割
  2. numpy.save
  3. h5py
  4. pytables

新しいコマンドを覚えるのが面倒なので、結局分割して対応しました。

(2016/10/22追記)
joblibを使うことでもっと簡単に解決できることが判明。
t-nkb.hatenablog.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