[英]Sharing information between a python code and c++ code (IPC)
我有2个代码库,一个在python中,一个在c ++中。 我想在它们之间共享实时数据。 我正在尝试评估哪个选项最适合我的特定用例:
我可以看到几个选项:
我还应该考虑其他解决方案吗?
首先,这个问题是基于意见的!
最干净的方法是在同一个过程中使用它们并让它们直接通信。 唯一的复杂性是实现适当的API和C ++ - > Python调用。 如您所述,缺点是可维护性并且可能降低稳健性(两者一起崩溃,在大多数情况下不是问题)和较低的灵活性(您确定您永远不需要在不同的机器上运行它们吗?)。 可扩展性是最好的,因为添加更多通信或更改现有通信非常简单。 您可以重新考虑可维护性点。 你可以使用没有C ++对应的python应用程序吗? 如果不是,我不会那么担心可维护性。
然后共享内存是下一个具有更好可维护性但同样缺点的选择。 可扩展性稍差但仍然不是那么糟糕。 它可能很复杂,我不知道Python支持共享内存操作,对于C ++,你可以看看Boost.Interprocess。 我首先要检查的主要问题是进程之间的同步。
然后,网络通信。 这里有很多选择,从套接字级别实现的最简单的二进制协议到注释中提到的更高级别的选项。 这取决于您的C ++ < - > Python通信的复杂程度。 这种方法实现起来可能更复杂,可能需要第三方库,但一旦完成它就可以扩展和灵活。 通常,第三方库基于代码生成(Thrift,Protobuf),不会简化构建过程。
对于这种情况,我不会认真考虑文件系统或数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.