我正在尝试cPickle一个大的scipy稀疏矩阵以供以后使用。但是我遇到了以下错误:
File "tfidf_scikit.py", line 44, in <module>
pickle.dump([trainID, trainX, trainY], fout, protocol=-1)
SystemError: error return without exception set
trainX
是一个大型稀疏矩阵,另外两个是长度为6百万的列表。
In [1]: trainX
Out[1]:
<6034195x755258 sparse matrix of type '<type 'numpy.float64'>'
with 286674296 stored elements in Compressed Sparse Row format>
目前,Python的内存使用量为4.6GB,而我的笔记本电脑有16GB的RAM。
我认为我遇到了一个已知的cPickle内存bug,它不能处理太大的对象。我也尝试过marshal
,但我不认为它适用于scipy矩阵。有人能提供一个解决方案吗?最好能提供一个加载和保存的示例。
Python版本:2.7.5
Mac OS版本:10.9
谢谢。