gpt4 book ai didi

python - 使用 swig 绑定(bind)谷歌 Protocol Buffer

转载 作者:太空狗 更新时间:2023-10-29 21:55:44 25 4
gpt4 key购买 nike

我正在编写需要处理大量小而复杂的 protobuf 编码消息的 python 程序。我尝试使用纯python写的protocol buffers的Python实现,但是性能实在是太差了。

所以我正在研究一个显然 some folks got to work 的解决方案- 使用 protoc 生成 C++ 文件,然后使用 swig 用 python 包装它们。问题是我无法进入工作的 Python 模块。

  • 使用 -includeall 运行 swig 时,确保生成的所有使用的 Google 基类/实用程序类消息类也被包装 - swig 失败,提示缺少系统包含文件(例如“string”)。我无法使用 -I 标志或复制整个包含目录来解决这个问题。环境为Ubuntu 10.04,protobuf 2.2.0,swig 1.3.40,gcc 4.4.3。

  • 没有这个标志,我可以为我的代码生成一个 python 模块消息类,但是这个模块没用:生成的 Python消息类缺少消息提供的所有功能基类 - 特别是除了一个之外的所有反序列化方法。剩下的一种方法(MergePartialFromCodedStream) 不会运行,因为它需要输入CodedInputStream 类型的流(即protobuf 基础设施的一部分,因此没有被包装痛饮)。

我想知道是否有人有一个让 swig 在 protobuf-C++ 之上工作的工作示例?

或者 - 是否有其他解决方案的示例,例如同一页中提到的 Python 扩展?尽管这对于我的动态模式来说似乎是一个需要大量维护的解决方案...

如果这些都不起作用,我正在考虑放弃 python 以支持 Groovy - 假设 Protocol Buffer 的 Java 实现会更有效率。对此有何评论?

非常感谢!

最佳答案

New version of Protobuf supports using the fast C++ implementation of Protobuf用 Python 代码。设置环境变量 PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp。

关于python - 使用 swig 绑定(bind)谷歌 Protocol Buffer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6670771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com