计算机管理系统:电脑网络技术记录本

其它编程语言

当前位置:首页 > 程序语言集合 > 其它编程语言

Windows 10 搭建Python3 安装使用 protobuf

Protobuf对比XML、Json等其他序列化的优势


protobuf 不管是处理时间上,还是空间占用上都优于现有的其他序列化方式。内存暂用是java 序列化的1/9,时间也是差了一个数量级,一次操作在1us左右。缺点:就是对象结构体有限制,只适合于内部系统使用。


json格式在空间占用还是有一些优势,是java序列化的1/2.6。序列化和反序列化处理时间上差不多,也就在5us。当然这次使用的jackson,如果使用普通的jsonlib可能没有这样好的性能,jsonlib估计跟java序列化差不多。


xml相比于java序列化来说,空间占用上有点优势,但不明显。处理时间上比java序列化多了一个数量级,在100us左右。


以前一种的java序列化,表现得有些失望


hessian测试有点意外,具体序列化数据上还步入json。性能上也不如jackjson,输得比较彻底。


hessian使用压缩,虽然在字节上有20%以上的空间提升,但性能上差了4,5倍,典型的以时间换空间。总的来说还是google protobuf比较给力

Windows 10 搭建Python3 安装使用 protobuf

Windows 10 搭建Python3 安装使用 protobuf

准备环境:


1,Python版本3.5.4


2,Protobuf版本3.7.0


3,Protobuf安装包:protoc-3.7.0-rc1-win64.zip


4,Win10 64位系统 


步骤:


【下载protoc】


https://github.com/google/protobuf/releases


根据自己的平台下载对应的编译器,我的是win10-64位,所以下载  protoc-3.14.0-win64.zip

Windows 10 搭建Python3 安装使用 protobuf

设置环境变量:这一步使你在本地任何地方使用protoc这个指令


(右击“此电脑”。。。)

Windows 10 搭建Python3 安装使用 protobuf

测试protoc:


新打开一个命令行:输入protoc --version,如果将输出版本号,说明protoc安装好了

Windows 10 搭建Python3 安装使用 protobuf

【编写.proto协议文件】


新建一个protobuf文件夹,手动创建test2.proto文件:

Windows 10 搭建Python3 安装使用 protobuf

并在test2.proto中输入:

syntax = "proto2";
message testinfo
{
required int32 devtype = 1;
required int32 devid = 2;
required int32 unitid = 3;
required int32 chlid = 4;
optional int32 testid = 5 [default = 0];
required bytes stepdata = 6;
}

编译】:


打开命令行,切换到protobuf文件夹下下面,执行protoc --python_out=./ test2.proto

                                             (这边--python_out=./ 这里有个空格test2.proto)不然会提示报Missing input file.错误。

Windows 10 搭建Python3 安装使用 protobuf

然后会生成一个python文件

Windows 10 搭建Python3 安装使用 protobuf

在目录下新建文件 test.py,写入代码

import test2_pb2
 
testinfo = test2_pb2.testinfo()  
testinfo.devtype = 100  
testinfo.devid = 2  
testinfo.unitid = 3  
testinfo.chlid = 4  
testinfo.testid = 250
testinfo.stepdata = b'abd'

print(testinfo, testinfo.devtype)  # 打印 protobuf 结构的内容
out = testinfo.SerializeToString()  
print(out)  # 打印 Protobuf 序列字符串
 
 
decode = test2_pb2.testinfo()  
decode.ParseFromString(out)  
 
print(decode) # 打印 解析Protobuf后的内容

运行python代码,得到以下结果,证明实验成功!(python运行之前需要先 pip install protobuf)不然会报  ModuleNotFoundError: No module named 'google' 错误。

Windows 10 搭建Python3 安装使用 protobuf

上一篇:已经是第一篇

下一篇:已经是最后一篇

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~