返回顶部
首页 > 资讯 > 后端开发 > Python >基于python的protobuf简介及
  • 392
分享到

基于python的protobuf简介及

简介pythonprotobuf 2023-01-31 05:01:54 392人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合

Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 rpc 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

1、安装protobuf
安装以及在python下使用protobuf,要求Python版本必须>2.6。

a) windows

打开网页下载最新版的protobuf-python-3.5.1.zipprotoc-3.5.1-win32.zip

解压文件后,将protoc-3.5.1-win32\bin\protoc.exe 复制到protobuf-3.5.1\src,然后进入目录protobuf-3.5.1\python\,运行命令:

  • python setup.py build //生成大量*.py

  • python setup.py install

打开网页下载最新版的protobuf-python-3.5.1.tar.gz,然后在当前目录下执行下述代码:
# 安装protobuf
tar zxvf protobuf-python-3.5.1.tar.gz
cd protobuf-3.5.1
./configure
make
make check
make install
​
# 验证
protoc --version
out:libprotoc 3.5.1 #表示安装成功
​
# 安装python protobuf模块
cd python
python setup.py install # 这一步需要先安装six模块才能正常安装

2、测试

创建一个proto文件test.proto,这实际上是定义数据类型,类似c中的struct

message CDevice
{
   optional int32 devId = 1;
   optional string name = 2;
}

该数据类型名为CDevice,其中包含两个属性,一个是int32型的设备Id devId,一个是string型的设备名称 name运行命令,生成test_pb2.py,该py文件需要import到测试程序中。如果proto文件中没有指定生成prot2还是proto3,默认生成proto2。在cmd中输入:

  • 【安装protec.exe的路径】-I=【proto文件所在的文件夹!注意是文件夹路径】 --python_out=【你期待输出的文件路径】【proto文件所在的文件夹+文件名】.proto

  • protoc -I=./ --python_out=./ test.proto

  • 注意等号两边不要留空格

-I为proto文件的路径,--python_out=./表示在当前路径下由指定的.proto生成python可用的*.py文件

import test_pb2
import traceback
import sys
#注:在该py文件中可以查到protobuf的调用方法,主要有序列化和反序列化。中间省略了数据传输部分,数据序列化后可以用rpc、Socket或者其他方式传输。
​
try:
    sendData = test_pb2.CDevice()
    sendData.devId = 9
    sendData.name = 'USB'
​
    sendDataStr = sendData.SerializeToString()
    print('SerializeToString:',sendDataStr)
​
    receiveDataStr = sendDataStr
    receiveData = test_pb2.CDevice()
    receiveData.ParseFromString(receiveDataStr)
    print('pares serialize string, return: devId = ', receiveData.devId, ', name = ',receiveData.name )
except Exception, e:
    print Exception, ':', e
    print traceback.print_exc()
    errInfo = sys.exc_info()
    print errInfo[0], ':', errInfo[1]
​
    
#输出结果:
('SerializeToString:', '\x08\t\x12\x03USB')
('pares serialize string, return: devId = ', 9, ', name = ', u'USB')


--结束END--

本文标题: 基于python的protobuf简介及

本文链接: https://lsjlt.com/news/188941.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基于python的protobuf简介及
    Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合...
    99+
    2023-01-31
    简介 python protobuf
  • python基础--protobuf的使
    protobuf2/3语法介绍 protobuf2语法介绍 protobuf3语法介绍 安装 linux安装 Mac安装 一个完整的例子 一个完整的例子(进阶版) protobuf2/3语法介绍 P...
    99+
    2023-01-31
    基础 python protobuf
  • Android中Protobuf的基本使用介绍
    目录前言一、Proto文件示例二、在Android中的使用1、 plugin配置2.、基本调用总结前言 Protobuf,类似于json和xml,是一种序列化结构数据机制,可以用于数...
    99+
    2024-04-02
  • 基于Spring MVC 简介及入门小例子(推荐)
    一、什么是 Spring MVCSpring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面,是一个强大灵活的 Web 框架。Spring MVC 提供了一个 Dispatcher...
    99+
    2023-05-31
    springmvc 入门 sprin
  • WebServer项目(四)->(基于Proactor的c++)Web服务器简介及简单实现
    基于Proactor的c++Web服务器项目 WebServer项目(四)->(基于Proactor的c++)Web服务器简介及简单实现1.Web Server(网页服务器)2.HTTP协议(...
    99+
    2023-09-20
    服务器 c++ 网络 linux 后端
  • 基于python tkinter的简单计
    import tkinter #定义计算器类 class Calc: #初始化魔术方法 def __init__(self): #初始化共用属性 #定义一个用于存放被计算字符串的列表 self.operationLi...
    99+
    2023-01-31
    简单 python tkinter
  • Python基础知识(一)—简介
    一、Python 简介 Python定义:是一个免费、开源、跨平台、动态、面向对象的编程语言。 Python程序的执行(运行)方式有两种:交互式、文件式 交互式在命令行输入指令,回城即可得到结果。1.打开终端2.进行交互式:python3...
    99+
    2023-01-31
    基础知识 简介 Python
  • python基础学习-socket简介
    导读socket简介,套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡的传输介质将这段信息发送给另一台主机的S...
    99+
    2023-06-02
  • 基于spyder的python教程(spyder的基本介绍)
    Spyder是一个基于Python的科学计算集成开发环境(IDE),提供了编辑、运行、调试和测试Python程序的功能。它是一个开源...
    99+
    2023-09-22
    python
  • python简介及下载安装
    一、Python简介: Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python的创始人为吉多·范罗苏姆(Guido van Ros...
    99+
    2024-04-02
  • K8s-helm简介及基本概念详解
    目录Helm简介一、什么是 Helm(官网:https://helm.sh/)二、Helm中的基本概念Chart三、从Helm2到Helm3的变化四、Helm版本支持策略Helm简介...
    99+
    2024-04-02
  • Python : Xpath简介及实例讲解
    文章目录 一、Xpath简介二、Xpath语法规则语法规则标签定位属性定位索引定位取文本内容 三、语法规则练习 前言 CSDN上已经有很多大佬发过Xpath,而且讲的都很好,我是...
    99+
    2023-09-15
    python 网络爬虫
  • 【python】io.BytesIO简要介绍及示例
    io.BytesIO简要介绍及示例 io.BytesIO 是 Python 内置的一个 I/O 类,用于在内存中读写二进制数据。它的作用类似于文件对象,但是数据并不是存储在磁盘上,而是存储在内存中的字...
    99+
    2023-10-09
    java 开发语言
  • 基于redis.properties文件的配置及说明介绍
    在使用到redis连接池时,需要进行一些redis相关配置,redis.properties文件是由编程者自己在项目classpath路径(如eclipse的src)下建立的,并非从redis安装包中获取的...
    99+
    2024-04-02
  • 基于Python的简易评论区抽奖
    文章目录 前言引入模块获取博客评论抽取用户程序入口效果 总结最后 前言 博主空空star主页空空star的主页 大家好,我是空空star,本篇给大家分享一下《基于Python的简易...
    99+
    2023-08-31
    python 开发语言
  • MySQL视图简介及基本操作教程
    前言 视图是数据库系统中一种非常有用的数据库对象。MySQL 5.0 之后的版本添加了对视图的支持。 认识视图 视图是一个虚拟表,其内容由查询定义。同真实表一样,视图包含一系列带有名称的列和行数据,但视...
    99+
    2024-04-02
  • Httprunner简介、安装及基本使用教程
    目录前言简介主要特点Httprunner2.x和3.x区别安装相关命令基本使用创建项目make转pytest用例run 运行用例前言 本系列文章开始介绍接口开源测试工具 --http...
    99+
    2024-04-02
  • 关于Redis的详细简介
    这篇文章主要介绍关于Redis的详细简介,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快;2.redis是单...
    99+
    2024-04-02
  • 基于python中的TCP及UDP(详解)
    python中是通过套接字即socket来实现UDP及TCP通信的。有两种套接字面向连接的及无连接的,也就是TCP套接字及UDP套接字。 TCP通信模型 创建TCP服务器 伪代码: ss = sock...
    99+
    2022-06-04
    详解 python TCP
  • Python中关于集合的介绍及用法
    一、集合的含义及创建方法 集合(set)是一种无序的并且里面存放不同元素的序列。 集合可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 创...
    99+
    2023-01-30
    Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作