我想用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