msgpack
在Pandas中被认为是pickle
的替代品。
这是一种轻量级可移植二进制格式,类似于二进制JSON,非常高效地利用了空间,并在写入(序列化)和读取(反序列化)方面提供了良好的性能。
然而,我发现它的性能似乎不如pickle。
df = pd.DataFrame(np.random.randn(10000, 100))
>>> %timeit df.to_pickle('test.p')
10 loops, best of 3: 22.4 ms per loop
>>> %timeit df.to_msgpack('test.msg')
10 loops, best of 3: 36.4 ms per loop
>>> %timeit pd.read_pickle('test.p')
100 loops, best of 3: 10.5 ms per loop
>>> %timeit pd.read_msgpack('test.msg')
10 loops, best of 3: 24.6 ms per loop
问题:除了pickle可能存在的安全问题,msgpack相较于pickle还有哪些好处?pickle目前是否仍然是首选的序列化数据方法,或者现在是否存在更好的替代方案?