Pandasmsgpack vs pi

2024-05-13 05:31:17 发布

您现在位置:Python中文网/ 问答频道 /正文

熊猫中的msgpack应该是pickle的替代品。

根据Pandas docs on msgpack

This is a lightweight portable binary format, similar to binary JSON, that is highly space efficient, and provides good performance both on the writing (serialization), and reading (deserialization).

不过,我发现它的性能似乎与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仍然是序列化数据的首选方法,还是目前存在更好的替代方法?


Tags: oftotestloopdfisonmsgpack
1条回答
网友
1楼 · 发布于 2024-05-13 05:31:17

泡菜更适合以下情况:

  1. 数字数据或任何使用缓冲区协议(numpy数组)的数据(但仅当您使用最近的protocol=
  2. 特定于Python的对象,如类、函数等。。(尽管你应该看看cloudpickle

MsgPack更适合以下情况:

  1. 跨语言互操作。它是JSON的一个替代品,有一些改进
  2. 对文本数据和Python对象的性能。这是一个像样的因素比腌菜在任何情况下都要快。

正如@Jeff上面提到的,this blogpost可能会引起兴趣

相关问题 更多 >