使用pickle保存大量的numpy arrays,使用pickle.dump方法的时经常出现MemoryError。错误信息如图所示。
根本原因是因为pickle本身的一些问题,对大量numpy arrays无法进行处理。
解决这个问题最好的办法就是抛弃pickle,使用joblib这个包来实现存储。详细信息:https://pypi.org/project/joblib/。
替换:
import numpy as np
import pickle
dat = np.zeros((100000,1000), dtype=np.int)
pickle.dump(dat, open("new_data.dat", "wb"))
为:
import numpy as np
import joblib
dat = np.zeros((100000,1000), dtype=np.int)
joblib.dump(dat, open("new_data.dat", "wb"))