【发布时间】:2016-06-09 15:06:49
【问题描述】:
我有 2 个代码库,一个在 python 中,一个在 c++ 中。我想在他们之间共享实时数据。我正在尝试评估哪个选项最适合我的特定用例:
- 从 C++ 程序到 python 程序的许多小数据更新
- 它们都在同一台机器上运行
- 可靠性很重要
- 低延迟很不错
我可以看到几个选项:
- 一个进程写入一个平面文件,另一个进程读取它。它不可扩展、速度慢且容易出现 I/O 错误。
- 一个进程写入数据库,另一个进程读取它。这使它更具可扩展性,更不容易出错,但仍然非常慢。
- 以一种或另一种方式将我的 python 程序嵌入到 C++ 中。我拒绝了该解决方案,因为这两个代码库都相当复杂,而且出于可维护性的原因,我更愿意将它们分开。
- 我在两个程序中都使用了一些套接字,并直接发送消息。这似乎是一种合理的方法,但没有利用它们在同一台机器上的事实(将通过使用本地主机作为目标进行轻微优化,但仍然感觉很麻烦)。
- 使用共享内存。到目前为止,我认为这是我找到的最令人满意的解决方案,但缺点是实施起来稍微复杂一些。
我还应该考虑其他解决方案吗?
【问题讨论】:
-
从 C++/Python 直接使用 Python/C++ 代码?
-
RESTful API 应该对你最有帮助,一个完美的独立于语言的 api
-
@Revolver_Ocelot,我拥有 2 个代码库,所以是的,我可以在每个代码库中直接使用代码。
-
这在很大程度上取决于您想要实现的目标,但也许 Swig 也是一个不错的选择。
-
Apache Thrift 是 ZeroMQ 的替代品,具有独立于语言的 RPC 框架。