• Python中msgpack库的使用


    msgpack用起来像json,但是却比json快,并且序列化以后的数据长度更小,言外之意,使用msgpack不仅序列化和反序列化的速度快,数据传输量也比json格式小,msgpack同样支持多种语言。

    安装
    直接pip即可

    pip install msgpack
    1
    使用
    import msgpack

    var = {'a': 'this',
    'b': 'is',
    'c': 'a test'
    }

    with open('data.txt', 'wb') as f1:
    msgpack.dump(var, f1) # 存储数据
    with open('data.txt', 'rb') as f2:
    var = msgpack.load(f2, use_list=False, encoding='utf-8') # 读取数据
    print(var)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    输出结果

    {'a': 'this', 'b': 'is', 'c': 'a test'}
    1
    存储类型
    使用type函数查看上述代码中提取出的var的类型

    print(type(var))
    1
    输出结果

    <class 'dict'>
    1
    可知msgpack提取出的数据类型为dict,即其以字典形式储存

    关于查看变量数据类型的方法可以参考Python中查看变量数据类型

    与json效率对比
    import json
    import msgpack

    stu = {
    'name': 'lili',
    'age': 18,
    'score': 100
    }

    # 序列化
    msg_str = msgpack.packb(stu)
    print(len(msg_str))
    json_str = json.dumps(stu)
    print(len(json_str))

    # 反序列化
    stu_dict = msgpack.unpackb(msg_str, use_list=False, encoding='utf-8')
    print(stu_dict)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    输出结果

    23
    41
    {'name': 'lili', 'age': 18, 'score': 100}
    1
    2
    3
    程序的运行结果表明,msgpack序列化后的字符串长度为23,而json模块序列化后的字符串长度为41,接近节省了一半的空间。

    参考资料
    【python】msgpack使用
    python序列化第2篇—msgpack

  • 相关阅读:
    [代码审计]eyoucms前台未授权任意文件上传
    第二届i春秋挖洞大赛的一些感想
    [代码审计]云ec电商系统代码审计
    [代码审计]covercms 后台getshell
    RPO漏洞学习
    [漏洞分析]phpyun系统重装安全隐患#影响从phpyun4.2部分,4.3到4.5全版本
    css块级元素居中
    Linux常用网站
    Linux常用命令
    C#编程网站
  • 原文地址:https://www.cnblogs.com/ExMan/p/10685116.html
Copyright © 2020-2023  润新知