在 python 代码和 c++ 代码 (IPC) 之间共享信息

Sharing information between a python code and c++ code (IPC)

我有 2 个代码库,一个在 python 中,一个在 c++ 中。我想在他们之间共享实时数据。我正在尝试评估哪个选项最适合我的特定用例:

我可以看到几个选项:

我应该考虑其他解决方案吗?

首先,这个问题是高度基于意见的!

最干净的方法是在同一个进程中使用它们并让它们直接通信。唯一的复杂性是实现适当的 API 和 C++ -> Python 调用。正如您所指出的那样,缺点是可维护性,并且可能会降低健壮性(两者都会崩溃,在大多数情况下不是问题)和较低的灵活性(您确定永远不需要 运行 它们在不同的机器上吗?)。可扩展性是最好的,因为添加更多通信或更改现有通信非常简单。您可以重新考虑可维护性点。你 python 应用程序可以使用 w/o C++ 对应吗?如果不是,我不会那么担心可维护性。

那么共享内存是下一个选择,它具有更好的可维护性,但也有其他缺点。可扩展性稍微差一点,但还算不错。它可能很复杂,我不知道 Python 是否支持共享内存操作,对于 C++ 你可以看看 Boost.Interprocess。我首先要检查的主要问题是进程之间的同步。

然后,网络通信。这里有很多选择,从在套接字级别实现的最简单的二进制协议到注释中提到的更高级别的选项。这取决于您的 C++ <-> Python 通信的复杂程度以及将来的复杂程度。这种方法实施起来可能更复杂,可能需要第 3 方库,但一旦完成,它就具有可扩展性和灵活性。通常第 3 方库基于代码生成(Thrift、Protobuf),不会简化您的构建过程。

对于这种情况,我不会认真考虑文件系统或数据库。