MessagePack (Python第三方库文档翻译)

MessagePack (Python第三方库文档翻译)
发行时间: Dec 18, 2020
官网:https://pypi.org/project/msgpack/
什么是MessagePack
MessagePack是一个高效的二进制序列化格式,它可以像JSON一样在众多语言之间交换信息。但MessagePack比JSON更快、更轻巧。这个包裹给CPython bindings提供读写MessagePack数据的功能。
对于使用者非常重要的通知
1:从0.5版本开始MessagePack在python第三方库中的名字从
msgpack-python更改为msgpack
2:从0.4版本或更早的版本更新时需要先pip uninstall msgpack-python 之后再 pip install -U msgpack。
与旧版的兼容性
1:在旧版MessagePack中,你可以使用use_bin_type=False选项将字节对象打包成原始类型,来代替新版MessagePack中二进制类型。
2:可以使用raw=True选项解包旧的msgpack格式。它将msgpack中的原始的字符串类型解压为Python字节。
详情见以下注释。
msgpack 1.0的重大突破性变化
python2:扩展模块不再支持Python2。纯Python实现(msgpack.fallback)被用于用于Python2。
Packer:
1:默认use_bin_type=True,在msgpack中字节被编码成二进制类型。如过你仍然使用python2,对于所用的string类型都要是用unicode。你可以使用use_bin_type=False编成旧的msgpack形式。
2:encoidng选项已移除,总是使用utf-8
unpacker
1:默认情况下,raw=False。它假设字符串类型是有效的UTF-8字符串,并将它们解码为Python 字符串(unicode)对象。
2:已删除encoding选项。可以使用raw=True来支持旧格式。
3:最大缓冲区大小的默认值从0更改为100 MiB
4:strict_map_key的默认值更改为True以避免hashdos。如果数据中包含的字典中的键的类型不是bytes或str,则需要传递strict_map_key=False。
安装:
$ pip install msgpack
纯Python实现
msgpack(msgpack._cmsgpack)中的扩展模块不支持Python 2和PyPy.。但是msgpack为PyPy 和python2提供了一个纯Python实现(msgpack.fallback)。由于pip使用纯Python实现,因此在可预见的将来不会放弃对python2的支持。
Windows
如果无法使用二进制发行版,则需要在Windows上安装Visual Studio或Windows SDK。没有扩展,在CPython上使用纯Python实现运行缓慢。
如何使用
注意:在下面的示例中,对于使用msgpack<1.0的用户,我使用raw=False和use_bin_type=True。这些选项是msgpack 1.0的默认选项,因此您可以忽略它们。
当前版本:msgpack 1.0.2
一次性打包与解包
使用packb打包和unpackb解包,为兼容python中json库和pickle库中dumps和loads方法msgpack也拥有dumps和loads方法。
pack和dump打包到一个类文件对象中,unpack和load在这里插入代码片把一个类文件对象解包。

>>> import msgpack
>>> msgpack.packb([1, 2, 3], use_bin_type=True)
'\x93\x01\x02\x03'
>>> msgpack.unpackb(_, raw=False)
[1, 2, 3]

unpack方法可以把msgpack的一个数组解包成一个列表,也可解包元组

>>> msgpack.unpackb(b'\x93\x01\x02\x03', use_list=False, raw=False)
(1, 2, 3)

为了向后兼容,您应该始终指定use_list关键字参数。请参阅下面有关use_list option的性能问题。
阅读docstring以获取其他选项。
流式解包
Unpacker是一个流式解包器&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值