最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用protobuf序列化和反序列化的實現(xiàn)

 更新時間:2021年05月19日 14:24:52   作者:叫我阿柒啊  
protobuf是一種二進制的序列化格式,相對于json來說體積更小,傳輸更快,本文主要介紹了Python使用protobuf序列化和反序列化的實現(xiàn),感興趣的可以了解一下

protobuf介紹

protobuf是一種二進制的序列化格式,相對于json來說體積更小,傳輸更快。

安裝protobuf

安裝protobuf的目的主要用來將proto文件編譯成python、c、Java可調(diào)用的接口。

# 如果gcc版本較低,需要升級gcc
wget https://main.qcloudimg.com/raw/d7810aaf8b3073fbbc9d4049c21532aa/protobuf-2.6.1.tar.gz
tar -zxvf protobuf-2.6.1.tar.gz -C /usr/local/ && cd /usr/local/protobuf-2.6.1
./configure 
make && make install
# 可以在/etc/profile或者~/.bash_profile末尾設置永久有效
export PATH=$PATH:/usr/local/protobuf-2.6.1/bin

使用下面命令查看是否安裝成功。

[root@CodeOnTheRoad ~]# protoc --version
libprotoc 2.6.1

構(gòu)建python接口

創(chuàng)建cls.proto文件,定義序列化結(jié)構(gòu):

package cls;

message Log
{
    message Content
    {
        required string key   = 1; // 每組字段的 key
        required string value = 2; // 每組字段的 value
    }
    required int64   time     = 1; // 時間戳,UNIX時間格式
    repeated Content contents = 2; // 一條日志里的多個kv組合
}

message LogTag
{
    required string key       = 1;
    required string value     = 2;
}

message LogGroup
{
    repeated Log    logs        = 1; // 多條日志合成的日志數(shù)組
    optional string contextFlow = 2; // 目前暫無效用
    optional string filename    = 3; // 日志文件名
    optional string source      = 4; // 日志來源,一般使用機器IP
    repeated LogTag logTags     = 5;
}

message LogGroupList
{
    repeated LogGroup logGroupList = 1; // 日志組列表
}
 

只用下面命令將proto文件轉(zhuǎn)換為python可調(diào)用的接口。

protoc cls.proto --python_out=./ 

執(zhí)行完后,在此目錄下生成cls_pb2.py。

序列化

import cls_pb2 as cls
import time

# 構(gòu)建protoBuf日志內(nèi)容
LogLogGroupList = cls.LogGroupList()

LogGroup = LogLogGroupList.logGroupList.add()
LogGroup.contextFlow = "1"
LogGroup.filename = "python.log"
LogGroup.source = "localhost"

LogTag = LogGroup.logTags.add()
LogTag.key = "key"
LogTag.value = "value"

Log = LogGroup.logs.add()
Log.time = int(round(time.time() * 1000000))

Content = Log.contents.add()
Content.key = "Hello"
Content.value = "World"
print(LogLogGroupList)
# 序列化
data = LogLogGroupList.SerializeToString()
print(data)

其實就是講一個protobuf的結(jié)構(gòu)文本序列化成了二進制的形式。

反序列化

反序列化就是將二進制轉(zhuǎn)換成protobuf結(jié)構(gòu)。

# 反序列化
LogLogGroupList = cls.LogGroupList()
LogLogGroupList.ParseFromString(data)
print(LogLogGroupList)

運行結(jié)果

上面序列化和反序列化代碼結(jié)果運行如下:

到此這篇關(guān)于Python使用protobuf序列化和反序列化的實現(xiàn)的文章就介紹到這了,更多相關(guān)Python 序列化和反序列化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用pyinstaller打包py文件的實現(xiàn)步驟

    使用pyinstaller打包py文件的實現(xiàn)步驟

    PyInstaller是一個用于將Python腳本打包成獨立可執(zhí)行文件的工具,本文主要介紹了使用pyinstaller打包py文件,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Python標準庫datetime?date模塊的詳細介紹

    Python標準庫datetime?date模塊的詳細介紹

    這篇文章主要介紹了Python標準庫datetime?date模塊的詳細介紹,datetime是Python提供的操作日期和時間的標準庫,主要有datetime.date模塊、datetime.time模塊及datetime.datetime模塊
    2022-07-07
  • keras做CNN的訓練誤差loss的下降操作

    keras做CNN的訓練誤差loss的下降操作

    這篇文章主要介紹了keras做CNN的訓練誤差loss的下降操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 對tensorflow中的strides參數(shù)使用詳解

    對tensorflow中的strides參數(shù)使用詳解

    今天小編就為大家分享一篇對tensorflow中的strides參數(shù)使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python opencv將表格圖片按照表格框線分割和識別

    python opencv將表格圖片按照表格框線分割和識別

    這篇文章主要介紹了python opencv將表格圖片按照表格框線分割和識別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • python函數(shù)參數(shù)*args**kwargs用法實例

    python函數(shù)參數(shù)*args**kwargs用法實例

    python當函數(shù)的參數(shù)不確定時,可以使用*args和**kwargs。*args沒有key值,**kwargs有key值,下面看例子
    2013-12-12
  • Python實現(xiàn)12306火車票搶票系統(tǒng)

    Python實現(xiàn)12306火車票搶票系統(tǒng)

    這篇文章主要介紹了Python實現(xiàn)12306火車票搶票系統(tǒng),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • Python tkinter實現(xiàn)日期選擇器

    Python tkinter實現(xiàn)日期選擇器

    這篇文章主要為大家詳細介紹了Python tkinter實現(xiàn)日期選擇器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 使用tkinter實現(xiàn)三子棋游戲

    使用tkinter實現(xiàn)三子棋游戲

    這篇文章主要為大家詳細介紹了使用tkinter實現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 使用Python實現(xiàn)壓縮pptx的功能

    使用Python實現(xiàn)壓縮pptx的功能

    當處理大型PPTX文件時,其中包含許多高分辨率照片時,文件大小可能會顯著增加,為了解決這個問題,我們可以使用Python編程語言和python-pptx庫來壓縮PPTX文件中的照片,下面我們就來看看具體操作吧
    2024-02-02

最新評論

潢川县| 金坛市| 武强县| 进贤县| 八宿县| 中江县| 象山县| 潜山县| 黑水县| 墨竹工卡县| 中方县| 潼关县| 鞍山市| 鱼台县| 正镶白旗| 商丘市| 田东县| 驻马店市| 浪卡子县| 巍山| 蒲城县| 长顺县| 额济纳旗| 田东县| 池州市| 唐河县| 永昌县| 惠州市| 大城县| 治县。| 浦东新区| 绵阳市| 桓仁| 枣庄市| 静宁县| 二连浩特市| 海盐县| 兴安县| 和顺县| 永春县| 吉安市|