Windows 10 搭建Python3 安装使用 protobuf

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

  1. protobuf 不管是处理时间上,还是空间占用上都优于现有的其他序列化方式。内存暂用是java 序列化的1/9,时间也是差了一个数量级,一次操作在1us左右。缺点:就是对象结构体有限制,只适合于内部系统使用。
  2. json格式在空间占用还是有一些优势,是java序列化的1/2.6。序列化和反序列化处理时间上差不多,也就在5us。当然这次使用的jackson,如果使用普通的jsonlib可能没有这样好的性能,jsonlib估计跟java序列化差不多。
  3. xml相比于java序列化来说,空间占用上有点优势,但不明显。处理时间上比java序列化多了一个数量级,在100us左右。
  4. 以前一种的java序列化,表现得有些失望
  5. hessian测试有点意外,具体序列化数据上还步入json。性能上也不如jackjson,输得比较彻底。
  6. hessian使用压缩,虽然在字节上有20%以上的空间提升,但性能上差了4,5倍,典型的以时间换空间。总的来说还是google protobuf比较给力

protobuf jackson xstream Serializable hessian2 hessian2压缩 hessian1
序列化(单位ns) 1154 5421  92406  10189 26794 100766 29027
反序列化(单位ns) 1334 8743  117329  64027 37871 188432 37596
bytes 97 311  664  824 374 283 495

准备环境:

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.7.0-rc1-win64.zip

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

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

测试protoc:

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

【编写.proto协议文件】

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

并在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文件

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

import test2_pb2testinfo = 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代码,得到以下结果,证明实验成功!

posted @ 2019-02-20 17:10 luyanjie 阅读(...) 评论(...) 编辑 收藏

Windows 10 搭建Python3 安装使用 protobuf相关推荐

  1. python374安装windows10_Windows 10 搭建Python3 安装使用 protobuf

    Protobuf对比XML.Json等其他序列化的优势 protobuf 不管是处理时间上,还是空间占用上都优于现有的其他序列化方式.内存暂用是java 序列化的1/9,时间也是差了一个数量级,一次操 ...

  2. tensor搭建--windows 10 64bit下安装Tensorflow+Keras+VS2015+CUDA8.0 GPU加速

    windows 10 64bit下安装Tensorflow+Keras+VS2015+CUDA8.0 GPU加速 原文见于:http://www.jianshu.com/p/c245d46d43f0 ...

  3. Windows 10 搭建Python开发环境(PyCharm )

    Windows 10 搭建Python开发环境(PyCharm ) 一.安装Python3 二.安装Pycharm 怎么使用PyCharm编写Python程序,简单教程. windows下安装pyth ...

  4. Windows 10 Technical Preview 安装体验及变化

    Windows 10 Technical  Preview  安装及最新变化 2014.10.1零晨,微软官方发布了windows 10技术预览版,下载体验一番,与大家分享一下使用心得. Window ...

  5. Win10安装程序修复计算机,如何在Windows 10上使用安装介质引导或修复

    本文将向您展示如何使用可启动的安装USB或DVD介质修复Windows 10安装,而不会丢失数据. 如果无法从Windows中访问Windows 10高级选项疑难解答选项,则需要使用USB或DVD介质 ...

  6. 如何在 Windows 10 的同时安装 Ubuntu 20.04实现双系统

    如何在 Windows 10 的同时安装 Ubuntu 20.04 和双启动 注:本文翻译自How to install Ubuntu 20.04 and dual boot alongside Wi ...

  7. 单EFI分区Archlinux + Windows 10 双启动安装记录

    单EFI分区Archlinux + Windows 10 双启动安装记录 前言 一些规范 一.安装前准备 1.下载ISO 2.用USB启动 二.开始安装 1.检查是否是UEFI启动 2.检查网络 3. ...

  8. Windows 10系统下安装MATLAB出现Error 1935的应对措施

    Windows 10系统下安装MATLAB出现Error 1935的应对措施 出现该错误的原因是安装过程默认安装的时C++ 2005而不是2008,因此绕开C++ 2005来安装.具体步骤如下: 1. ...

  9. windows 10 64位安装Python3.6.4

    1.下载Python3.6 windows版本的安装包 Python官网地址:https://www.python.org 下载软件包:python-3.6.4.exe 2.安装Python3.6版本 ...

最新文章

  1. 另辟蹊径创建移动应用:iOS和Android代码共享
  2. JavaBean组件的基本使用-语法
  3. OpenCV相机位移引起的单应性的实例(附完整代码)
  4. java truevfs_Java-Apache Commons VFS:使用FTP
  5. iOS开发--一步步教你彻底学会『iOS应用间相互跳转』
  6. django migration使用指南
  7. Spring之对象依赖关系
  8. 从入门到高级Java书籍推荐
  9. js 生成二维码(qrcodejs)
  10. 关于无穷级数收敛的充要条件的猜想
  11. 职场潜规则:非985院校的简历,一律扔进垃圾桶
  12. 阿里云文字转语音接口
  13. es提示 MaxNewSize (1048576k) is equal to or greater than the entire heap (1048576k). A new max genera
  14. 窄带包络Matlab分析,窄带随机过程的产生及其性能测试
  15. 虚拟摄像头/无人直播效果分析,可替抖音/微信
  16. 树莓派4B:智能植物管家
  17. 拾贰SparkSQL:数据关联优化
  18. 手机拍摄证件照可以用什么软件
  19. Flash常用源代码大全
  20. 皮卡智能2022年功能升级汇总,打造智能工作新体验

热门文章

  1. UIViewController生命周期的理解
  2. 移动对meta的定义(转)
  3. OCP题库笔记1z0-052
  4. python查询mysql decimal报错_python读取MySQL数据表时,使用ast模块转换decimal格式数据的坑...
  5. 项目管理十大知识领域,为何不含
  6. Visio图形自动编号
  7. 批量删除table或view
  8. mysql双机热备 配置文件,MYSQL 双机热备配置手册()
  9. debug error怎么解决_我要以血和泪的经历告诉你,这个 bug 太难解决了
  10. matlab 锐化降噪,matlab 图形锐化 滤波