在一項目中需要C/C++與Python之間做交互,C/C++爲網絡層,Python爲數據計算處理層,有多種方式可選:
1. C/C++裏調用Python腳本函數
優點:實現起來最簡單,穩定,可靠
缺點:遷移運行環境後,需要安裝重新部署Python腳本的Python運行環境,非常麻煩,這在終端型軟件(運行於客戶電腦)來說,完全不可接受
由於我要做的軟件需要運行於客戶電腦,不可能還要配置客戶電腦的Python運行環境,因此以上方式放棄。
2. 將Python打包成獨立進程,C/C++於Python實現進程間通信,有以下幾種方式:
(1)SOCKET通信
實現起來比較麻煩,誰當服務端客戶端,用UDP還是TCP,SOCKET阻塞還是非阻塞,發送接收失敗如何處理、如果是TCP還要考慮連接斷開、重連問題
(2)管道
管道只能單向傳輸,雙向傳輸需要創建兩個管道,而且管道也有阻塞非阻塞之分
(3)共享文件
實現相對簡單,需要進程間加鎖,可用信號量實現,防止讀寫同時進行
(4)共享內存
也需要進程間加鎖