从0.12升级到pandas 0.13后,我注意到大量的泡菜文件正在服用
加载pandas.read_pickle()
需要更长时间。似乎0.13不再使用cPickle进行阅读 - 这是故意的吗?
我的测试数据集的文件大小为1.6Gb,包含大约1300万条记录。
使用0.12文件需要加载146秒; 0.13需要982秒(约长6.7倍)。
我首先想到的是因为我用0.12编写了pickle文件并用0.13读取,并且它被迫使用兼容模式(参见this question)。但即使我再次从0.13保存文件,它仍然使用本机python pickle而不是cPickle来读取它。我看了cProfile验证。看看源代码here和here它似乎很清楚它会使用cPickle来编写,但总会使用原生的python pickle来加载。
如果我使用cPickle.load(open('foo.pickle'))
代替pandas.read_pickle('foo.pickle')
(如果您知道pickle版本是相同的话,我认为这是安全的吗?)然后我得到我的因子6。
to_pickle/read_pickle
不再是推荐的方法,还是这个错误?