详解Python Google Protocol Buffer

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

为什么要使用PB?

PB(Protocol Buffer)是 Google 开发的用于结构化数据交换格式,作为腾讯云日志服务标准写入格式。因此用于写入日志数据前,需要将日志原始数据序列化为 PB 数据流后通过 API 写入服务端。而各个端类程序中不便操作PB格式,因此需要在端类和日志服务之间加入一层PB转化层。

当然PB格式也有自己的优点,主要是简单和快。

安装Google PB

如果要想在Python中使用PB,需要先安装PB编译器protoc去编译你的.proto文件,安装方法如下:

下载最新的protobuf release包安装即可,当前版本为3.5.1,安装步骤如下

wget https://github.com/google/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.tar.gz
tar xvfz protobuf-all-3.5.1.tar.gz
cd protobuf-3.5.1/
./configure --prefix=/usr
make
make check
make install
复制代码

check步骤全部通过即表示编译通过。

继续安装protobuf的python模块

cd ./python 
python setup.py build 
python setup.py test 
python setup.py install
复制代码

安装完成验证protoc命令

root@ubuntu:~# protoc --version
libprotoc 3.5.1
复制代码

protobuf的默认安装位置是 /usr/local,/usr/local/lib 不在Ubuntu系统默认的 LD_LIBRARY_PATH 里,如果在Ubuntu系统中configure时未指定安装路径为/usr, 则会出现以下错误

protoc: error while loading shared libraries: libprotoc.so.8: cannot open shared object file: No such file or directory
复制代码

可以使用ldconfig命令解决,参考Protobuf cannot find shared libraries,这个错误在安装包的README中有提到。当然重新安装也可以

验证Python模块是否被正确安装

import google.protobuf
复制代码

在python解释器中如果上面的import没有报错,说明安装正常。

自定义.proto 文件

首先我们需要编写一个 proto 文件,定义我们程序中需要处理的结构化数据,在 protobuf 的术语中,结构化数据被称为 Message。proto 文件非常类似 java 或者 C++ 语言的数据定义。proto示例文件cls.Log.proto如下:

syntax = "proto2";
package cls;
message Log
{
 
【Protobuf】使用Python实现Protobuf数据框架 阅读详情

相关推荐

Python 操作 protobuf 常见用法

ProtoBuf: 是一套完整的 IDL(接口描述语言),出自Google,基于 C++ 进行的实现,开发人员可以根据 ProtoBuf 的语言规范生成多种编程语言(Golang、PythonJava 等)的接口代码,本篇只讲述 Python 的基础操作。据说 ProtoBuf 所生成的二进制文件在存储效率上比 XML 高 3~10 倍,并且处理性能高 1~2 个数量级,这也是选择 ProtoB...

mijichui2153的博客 1万+

JavaScript 逆向】Protobuf 协议之万方数据平台正逆分析

Protobuf 序列化协议正向与反向解析,万方数据平台检索内容提取

Yy_Rose的博客 6515

实现protobuf和json互相转换python3源码

实现protobuf和json互相转换python3源码,protobuf是Google开源的新传输协议,压缩效率和传输效率比XML和json都要高

protobuf报错

  >>> import tensorflow as tf Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.5/dist-packages/tensorflow/__init__.py", line 2...

ZHO9504的博客 2509

python调用Google Protocol Buffer

下载地址: http://code.google.com/p/protobuf/downloads/list 安装命令 tar -xzf protobuf-2.5.0.tar.gz  cd protobuf-2.5.0  ./configure --prefix=$INSTALL_DIR  make   make check  make install 然

sanguomi的专栏 5374

google Protocol Buffer 入门

来源于我的个人博客, 原文用markdown编写,转到csdn格式有些问题。 简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是一种轻

cbl709的专栏 1617

Google protocol-buffer详解与示例应用

1. Protocol Buffer 简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准, 目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。 他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是一种轻便高效的结构化数据存储格式, 可以用...

北雨南萍 1075

Google Protocol Buffer使用和原理

简介什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol Buffer...

KnightOnHorse的博客 465

Google protocol buffer 使用和原理浅析 And 进阶使用方式之PbCodec

Google Protocol Buffer又简称Protobuf,它是一种很高效的结构化数据存储格式,一般用于结构化数据的串行化,简单说就是我们常说的数据序列化。这种序列化的协议非常轻便高效,而且是跨平台的,目前已支持多种主流语言(3.0版本支持C++, JAVA, C#, OC, GO, PYTHON等)。

来自星星的の松子的博客 1万+

python google buffer_python调用Google Protocol Buffer

写proto文件package lm;message Person{required int32 id = 1;required string str = 2;optional int32 opt = 3;}保存为 testp.testpb.proto编译指令protoc -I=/home/workspace/testprob --python_out=/home/workspace/test...

weixin_39609527的博客 120

google protocol buffer (C++,Java序列化使用实例)

转载,请注明出处: http://blog.csdn.net/eclipser1987/article/details/8525383  (eclipser@163.com) 1.下载安装: google protocol buffer 的官网地址是:http://code.google.com/p/protobuf/         建议下载稳定版本:protobuf-2.4.1

噬日者 1万+

Protocol Buffer详解使用及原理

登录 | 注册 IBM 技术主题 软件下载 社区 技术讲座 搜索 developerWorks 打印本页面 用电子邮件发送本页面 新浪微博 人人网 腾讯微博 搜狐微博 网易微博 Digg Facebook Twitter Delicious Linked In

蒲公英的晴空 2833

Google Protocol Buffer安装编译及使用

最近玩了玩谷歌的Protocol Buffer,下面就简单介绍下 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过12,183 个.proto 文件,他们用于RPC 系统和持续数据存储系统。Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用

4589

Google Protocol Buffer 使用

Google Protocol Buffer使用 关键语义 语义 名称 emun 枚举类 message java类定义 optional,require,repeated 数据类型,对象引用 import 引用其他proto文件 package 对应生成java类的包名 optional java_package 定义编译后产生的文件所在包结构的,即编写生成后...

七乘563的博客 300

google protocol bufferpython使用utf-8的问题

google protocol buffer好用,但是在python中会有一些小问题。比如不支持utf-8只支持unicode的字符串。在我们的系统中,存储的和传输的都是utf-8,因此在代码中(c++,javapython)都统一使用utf-8格式。所以就带来不方便,比如c++中需要从utf-8转为unicode,python中再解析出来。实际上,可以让google protocol buff

架构和代码 1万+
上一篇: 用Python写个开心消消乐小游戏
下一篇: 学习笔记:Python爬虫之BeautifulSoup库
pythonputao
博客等级 码龄6年 60粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值