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 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章