异想天开

What's the true meaning of light, Could you tell me why

python与protobuf

日期:2014-12-25 16:29:20
  
最后更新日期:2015-06-22 12:28:07
【水文记录】
protobuf是一套序列化格式google的开源工具。支持c++,java和python。python常用于后端监控,故了解了python怎么使用protobuf。前提首先需要安装protobuf的python库,如果centos的软件仓库源有protobuf,那么直接yum安装:
[code lang="cpp"]
yum install protobuf-compiler.x86_64
yum install protobuf-python.x86_64
[/code]
自己编译,需要在protobuf源码包的python目录下,执行:
[code lang="cpp"]
python ./setup.py build
python ./setup.py install
[/code] 动手写了一个demo如下:
[code lang="cpp"]
#msg.proto
message HelloMsg{
required int64 datasize = 1;
required bytes data = 2;
}
#编译指令
protoc --cpp_out=./ ./msg.pro
[/code]

序列化和反序列化的python脚本:
[code lang="cpp"]
#要发送的字符串
send_str="hello world"
#构造命令
req = HelloMsg()
req.datasize=len(send_str)
req.data=send_str
#序列化
send_cmd = req.SerializeToString()
#执行io操作,比如保存到文件,通过网络socket发送
...
#发序列化 recv_buf为接收到的缓冲区
resp = HelloMsg()
resp.ParseFromString(recv_buf)
[/code]