[英]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.