a@ubuntu:~/Downloads/tensorflow$ git branch
master
* r1.13
a@ubuntu:~/Downloads/tensorflow$ find . -name "*proto"
。。。。
./tensorflow/core/framework/tensor.proto
。。。
编译安装后对应的文件
/usr/local/lib/python3.5/dist-packages/tensorflow/include/tensorflow/core/framework/tensor.pb.h
/usr/local/lib/python3.5/dist-packages/tensorflow/core/framework/tensor_pb2.py
build_config.bzl 文件中定义了protoc的编译规则和文件命名规则
def _proto_cc_hdrs(srcs, use_grpc_plugin = False):
ret = [s[:-len(".proto")] + ".pb.h" for s in srcs]
if use_grpc_plugin:
ret += [s[:-len(".proto")] + ".grpc.pb.h" for s in srcs]
return ret
def _proto_cc_srcs(srcs, use_grpc_plugin = False):
ret = [s[:-len(".proto")] + ".pb.cc" for s in srcs]
if use_grpc_plugin:
ret += [s[:-len(".proto")] + ".grpc.pb.cc" for s in srcs]
return ret
def _proto_py_outs(srcs, use_grpc_plugin = False):
ret = [s[:-len(".proto")] + "_pb2.py" for s in srcs]
if use_grpc_plugin:
ret += [s[:-len(".proto")] + "_pb2_grpc.py" for s in srcs]
return ret
-----------------------------
序列化 (打包成二进制)
serialized: tensor_proto.SerializeToString()
反序列化(解析)
ParseFromString
>>> pack = sr.SerializeToString()
>>> pack
b'\n\x08my query'
>>> help(sr.SerializeToString)
>>> help(sr.ParseFromString)
>>> a = sr.ParseFromString(pack)
>>> a
10
>>> pack
b'\n\x08my query'
>>> sr2 = SearchRequest()
>>> sr2
>>> sr
query: "my query"
>>> sr2.ParseFromString(pack)
10
>>> sr2
query: "my query"
>>>