我有2个代码库,一个在python中,一个在c ++中.我想在它们之间共享实时数据.我正在尝试评估哪个选项最适合我的特定用例:
我可以看到几个选项:
我还应该考虑其他解决方案吗?
首先,这个问题是高度基于意见的!
最简洁的方法是在同一进程中使用它们并让它们直接通信。唯一的复杂性是实现正确的 API 和 C++ -> Python 调用。缺点是可维护性,正如您所指出的,并且可能会降低稳健性(两者都会崩溃,在大多数情况下不是问题)和较低的灵活性(您确定永远不需要在不同的机器上运行它们吗?)。可扩展性是最好的,因为添加更多通信或更改现有通信非常简单。您可以重新考虑可维护性点。你的Python应用程序可以在没有C++对应的情况下使用吗?如果不是的话,我就不会那么担心可维护性。
那么共享内存是下一个选择,它具有更好的可维护性,但其他缺点也相同。可扩展性稍差一些,但还不错。它可能很复杂,我不知道Python是否支持共享内存操作,对于C++你可以看看Boost.Interprocess。我首先要检查的主要问题是进程之间的同步。
然后,网络通讯。这里有很多选择,从在套接字级别实现的最简单的二进制协议到注释中提到的更高级别的选项。这取决于您的 C++ <-> Python 通信的复杂程度以及未来的复杂程度。这种方法实施起来可能比较复杂,可能需要第三方库,但一旦完成,它就具有可扩展性和灵活性。通常,第 3 方库基于代码生成(Thrift、Protobuf),这不会简化您的构建过程。
对于这种情况,我不会认真考虑文件系统或数据库。
| 归档时间: |
|
| 查看次数: |
1091 次 |
| 最近记录: |