我想用C++编写一个守护进程,它将保存一个图数据结构并计算一些依赖关系。我还想要Python Batch(也是一个守护进程 - 基于HTML的GUI的后端),它允许用户在这些C++结构上进行交互操作 - 添加/删除/连接/ ...节点并读取计算结果。Python <-> C++面向对象通信
我很想选择最好的通讯机制。
的强制性功能:
- Python和C++应该能够在面向对象方法的节点进行操作,所以像
n1 = node('a'); n2 = n1.add_subnode('b'); n2.ports('test').connect(node('c'))
- Python的批次不我希望能够编写代码必须与C++守护进程“分离” - 它们可以具有相同的生命周期(但在C++崩溃或错误情况下以某种方式将批处理与C++守护进程分开是很好的 - 这种分离是可选的)
- 通信应该要快 - Python应该能够获得大量节点和信息让最终用户尽可能顺利地工作。用某种数据序列化机制
- IPC(如0MQ):
目前,我在想什么。
- RPC基于Protocol Buffers或Thrift。
- 集成基于Boost.Python
的IPC和RPC的解决方案似乎不错,但我必须写一个大包装,以获得从点1的功能在另一方面,我没有发现任何有关使用升压信息。 Python中的C++守护进程,我不知道它是否可能。
谢谢C++守护在C++,但经过一番调查我碰到一个想法来写的,它并没有成为守护 - 它可以写成一组使用'Cython'由Python中的库/' Boost.Python'。 C++部分是一个编译器,它将图形编译为一些二进制机器代码。我想我找到了解决办法 - 让Python的这将调用一些功能使用'Cython'是很好的解决方案我的C++库守护进程。 –
同意。通常它是最好的可能的选择:实现一般控制逻辑在Python和提供的东西不能在Python进行如在C++实现的扩展模块。 – Ellioh