Google protobuf在python中的应用研究

软件版本

  • Python: 3.7.3
  • OS: Win7
  • protoc: 3.11.2
  • protobuf runtime library: 3.11.2
  • protobuf runtime library install method: pip
  • proto syntax: "proto2"

注意事项

  • 使用编译工具protoc编译输出的.py文件对python解释器以及对应的protobuf包都有版本要求
  • 对应的嵌套message类在赋值时需要注意要求及方法的使用
  • 因为google protobuf向前兼容,所以使用"proto2"也可以
  • 官方网站访问卡顿,下载protoc可以从maven下载1
  • python安装包也有镜像网站2
  • 关于为何使用该包可以参见3
  • google protobuf官网4

基本代码示例

	#声明消息头
 	message_head = message_pb2.MessageBase.Header()
 	#枚举的赋值值得关注
    message_head.type = message_pb2.MessageBase.SERVICE_REQ

	#声明消息体,包含了一个Alarm对象的实例
    message_body = message_pb2.MessageBase.Body()
    message_body.context.MergeFrom(alarm)

	#声明整个消息体并对其实例化,整合消息头和消息体的数据
    message = message_pb2.MessageBase()
    message.header.MergeFrom(message_head)
    message.body.MergeFrom(message_body)

总结

下图是序列化的结果
在这里插入图片描述
前期把java的跑通了,最近迷上了python,也想跑通。官方提供了上述编码中遇到的MergeFrom()方法也是个基本方法之一,注意的细节也说明了,其它问题应该都好解决。


  1. https://repo1.maven.org/maven2/com/google/protobuf/protoc/ ↩︎

  2. http://npm.taobao.org/mirrors/python/ ↩︎

  3. https://blog.csdn.net/mzpmzk/article/details/80824839 ↩︎

  4. https://developers.google.cn/protocol-buffers ↩︎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追寻上飞

鼓励一下这只勤劳的小蜜蜂吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值