protoc 和 protobuf(Protocol Buffer)有什么区别

Bha*_*ran 9 protocol-buffers protoc tensorflow

可以澄清协议缓冲区和协议之间的区别吗?。谷歌搜索只显示协议缓冲区。我看到 protobuf-programming language-version 和 protoc-operating system-86_32 的命名约定是不同的。它们是不同的还是相同的?

使用 tensorflow 时是否需要同时安装两者?虽然

protoc --version
Run Code Online (Sandbox Code Playgroud)

是 3.6 但我的 pip 在抱怨

tensorflow-gpu 1.7.0 has requirement protobuf>=3.4.0, but you'll have protobuf 2.6.1 which is incompatible.
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 11

“protobuf”或“协议缓冲区”是序列化格式和/或相关工具的名称。

protoc 是一个特定的 protobuf 工具,特别是 Google 对“.proto”解析器和代码生成器(以及其他一些东西)的实现

“.proto”是一种模式 DSL,用于描述您计划在应用程序中使用的消息 - 它是基于文本的。

通常的流程是:

  1. 为您的消息编写或获取 .proto
  2. 通过 protoc 或任何其他特定于库的生成器工具运行 .proto 以获取目标平台的消息类型
  3. 将这些生成的消息类型添加到您的应用程序中
  4. 导入/引用与您选择的工具/平台匹配的 protobuf 库
  5. 建造

一些工具反过来工作,在你的平台上使用你自己的类型(“代码优先”而不是“合同优先”方法)