Protocol buffers--python 实践 简介以及安装与使用
简介:
Protocol Buffers以下简称pb,是google开发的一个可以序列化 反序列化object的数据交换格式,类似于xml,但是比xml 更轻,更快,更简单。而且以上的重点突出一个跨平台,和xml json等数据序列化一样,跨平台跨语言。
安装:
前往github:https://github.com/google/protobuf/releases 下载最新版本的对应语言的pb,比如这里我是python 所以我会下载。
protobuf-python-3.11.4.tar.gz
1.解压 protobuf-python-3.11.4.tar.gz 并进入解压目录
2.运行包中自带config文件 ./configure
3.make
4.make install (可能要sudo 权限)
5.之后便可以使用命令 protoc --version 查看安装完毕的版本号
另外从网上看到还可以这样安装(运行命令,貌似没报什么错):
另外安装方面也可以直接安装grpc: pip install grpcio pip install grpcio-tools 然后会安装pb依赖,grpc_tools.protoc工具就是protocol buffer.
使用
归根到底,pb还是一个序列化反序列化工具,那么使用上来说其实我个人认为是没有json那么简单的,但是却可以保证即使是在python这种动态语言中,数据类型也不会出现错误。他的使用需要定义一个.proto文件,该文件里面会定义号数据类型和格式。我在这里就不再搬运各语言对应的字段,因为这些官方文档中都写的非常清楚。这里直接上最简单的使用。
首先在say_hi.proto文件中定义一个需要在代码中传递的数据结构:
syntax = "proto2"; package hello_word; message SayHi { required int32 id = 1; required string something = 2; optional string extra_info = 3; }
然后使用命令:
protoc -I . --python_out=. say_hi.proto
在当前路径下面生成一个say_hi_pb2.py文件。
-I 是指定.proto文件所在路径。
--python_out 输出生成好的pb2.py文件所在路径。
后面参数指定使用哪个.proto文件。
之后我们就可以愉快的使用这个生成好的文件的类进行数据序列化反序列化了。使用例子如下:
创建一个test.py 文件
# coding: utf-8 import say_hi_pb2 po = say_hi_pb2.SayHi() po.id = 123 po.something = 'do_something' po.extra_info = 'xiba' bilibili = po.SerializeToString() oo = say_hi_pb2.SayHi() oo.ParseFromString(bilibili) print oo.id print oo.something print oo.extra_info
运行 python test.py
结果输出如下:
123 do_something xiba
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY