我在 Ubuntu 16.04 上使用 Python 2.7 和 NumPy 1.11.2,以及最新版本的 dill(我刚刚做了pip install dill
)。
使用 pickle 存储 NumPy 数组时,我发现 pickle 非常慢,并且以几乎三倍于“必要”大小的方式存储数组。
例如,在以下代码中,pickle 大约慢了 50 倍(1 秒对 50 秒),并创建了一个 2.2GB 而不是 800MB 的文件。
import numpy
import pickle
import dill
B=numpy.random.rand(10000,10000)
with open('dill','wb') as fp:
dill.dump(B,fp)
with open('pickle','wb') as fp:
pickle.dump(B,fp)
我以为莳萝只是泡菜的包装。如果这是真的,有没有办法可以自己提高泡菜的性能?通常不建议对 NumPy 数组使用 pickle 吗?
编辑:使用 Python3,我得到相同的pickle
性能dill
PS:我知道numpy.save
,但我正在一个框架中工作,我将许多不同的对象(全部位于字典中)存储到文件中。