protobuf for python 安装与使用

来源:互联网 发布:美国失业率数据 编辑:程序博客网 时间:2024/04/30 22:07

Protobuf的使用简单来说分为两部分:

1、安装protobuf for python 

2、编译并使用*.proto

首先需要protobuf源码,可以去google code上下载,地址:https://code.google.com/p/protobuf/downloads/list

但是因为众所周知的原因一般不 翻*墙*的话是无法下载,本人提供了百度云下载地址:http://pan.baidu.com/s/1mgzGPk8

下载后得到protobuf'源代码,安装步骤如下:

1、编译生成protoc.exe,使用vsprojects文件夹下面的工程protoc工程即可。已编译好的2.5.0版本下载地址:http://pan.baidu.com/s/1mgzGPk8

2、将protoc.exe 拷贝进入源代码文件夹下 src中

3、进入源代码文件夹下python文件夹,cmd执行 python setup.py build

4、cmd执行 python setup.py install

接下来就是如何使用protobuf的问题了,步骤如下:

1、创建测试用proto源文件,如:CustomerInfo.proto,内容如下


package tutorial;  message CustomerInfo{     optional string member_id = 1; //会员ID 标识客户在数据库中的id     optional float money = 2; //会员金额    } </span>



2、进入源代码文件夹中存放protoc.exe的地方,例如我将proto文件凡在d:/目录下,则在cmd中运行protoc -I=d:/ --python_out=d:/ d:/CustomerInfo.proto

成功后生成 CustomerInfo_pb2.py

3、新建python工程引入该文件,如下:


# coding = utf-8from CustomerInfo_pb2 import CustomerInfoif __name__ == '__main__':    # SerializeToString    new_obj = CustomerInfo()    new_obj.member_id = '100'    new_obj.money = 20.0    s_str = new_obj.SerializeToString()    print u'Serializ:'    print s_str    # ParseFromString    new_obj2 = CustomerInfo()    new_obj2.ParseFromString(s_str)    print u'Parse:'    print new_obj.member_id    print new_obj.money</span>

其中SerializeToString方法为序列化方法,将实例序列化为字符串。ParseFromString为反序列话方法,将字符串还原为实例

只要双方使用一样的CustomerInfo_pb2.py就可以使用获得完全一样的结果。


小结:

Protobuf工具使用稍显复杂,不过相对于json格式来说可以节省一定空间开销。所以在对性能方面需要高要求时,可以使用protobuf替代json方式。

详细官方教程参见:https://developers.google.com/protocol-buffers/docs/tutorials


0 0
原创粉丝点击