Protocol buffers--python 实践 简介以及安装与使用

摘要:
--python_out输出生成好的pb2.py文件所在路径。

简介:

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

免责声明:文章转载自《Protocol buffers--python 实践 简介以及安装与使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP PDO 基础(常用)Java 音频加水印下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python:动态参数*args

动态参数   顾名思义,动态参数就是传入的参数的个数是动态的,可以是1个、2个到任意个,还可以是0个。在不需要的时候,你完全可以忽略动态函数,不用给它传递任何值。 Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号的区别,而不是args和kwargs在名字上的区别,实际上你可以使用*any或**whatever的...

python 创建、进入、退出虚拟环境

创建虚拟环境: python -m venv myvnev 进入虚拟环境(windows): cd myvenvcd Script activate linux: cd myvenv/bin/ source activate 退出虚拟环境: deactivate...

Spark python集成

Spark python集成 1、介绍 Spark支持python语言,对于大量的SQL类型的操作,不需要编译,可以直接提交python文件给spark来运行,因此非常简单方便,但是性能要比scala或java慢。对于常规任务,可以使用python来编写,特殊任务还是建议scala编写。 2、使用pyspark启动spark shell(centos) 2...

Detectron的安装以及解决方案

转载:https://blog.csdn.net/comway_Li/article/details/85163607 本博客介绍了如何安装Detectron,其依赖项(包括Caffe2)和COCO数据集。 安装前所需知道的知识: a、Detectron运营商目前没有CPU实施;需要GPU系统。 b、caffe2 已经集成到pytorch1.0中,所以框架...

简单谈谈python的反射机制

反射,可以理解为利用字符串的形式去对象中操作成员属性和方法 反射的这点特性让我联想到了exec函数,也是把利用字符串的形式去让Python解释器去执行命令 Python Version: 3.5+   对编程语言比较熟悉的朋友,应该知道“反射”这个机制。Python作为一门动态语言,当然不会缺少这一重要功能。然而,在网络上却很少见到有详细或者深刻的剖析...

windows环境下的Anaconda安装与OpenCV机器视觉环境搭建

https://blog.csdn.net/iracer/article/details/80498732 本文介绍win7和win10系统下通过Anaconda配置基于python语言的机器视觉编程环境(博主测试了两个系统下的安装基本相同),主要内容包括: Anaconda下载安装OpenCV下载安装测试安装结果本文安装的版本为:Anaconda4.2+...