1

我在Linux機器上運行了兩個後臺進程。一個是Java,另一個是Python。這兩個應用程序之間的交換數據最有效的方法是什麼?我正在談論文本/圖像數據低於< 10Mb大約每5分鐘(未流式傳輸)。由於重構成本太高,我們無法完全遷移到Python(或Java)。Java和Python守護進程之間的數據橋

自然的選擇是文件系統或本地網絡,但在內存數據庫(sqllite/redis/...)呢? 文件系統處理或網絡處理有時是痛苦的我猜。

您是否認爲內存中的數據庫對於這樣的任務來說是很好的選擇? Jython是不是選項有,因爲不是所有的Python庫兼容...

環境:Ubuntu服務器12.04 64位,Python 2.7版,Java 7的

+1

我會看看ZeroMQ。它並不痛苦,並且具有Python和Java兩種風格。 – Micke 2013-05-08 06:03:13

回答

1

傳輸數據的有效方式是本地TCP連接並使用通用協議流式傳輸數據。 Protocol buffers是跨語言平臺定義協議的一種方法。內存數據庫會爲您的系統添加一個全新的組件和不必要的複雜性。

1

鑑於數據的相對低量,你需要,我會說最簡單的方法是使用TCP套接字在兩個進程之間進行通信。環回接口上的數據速度足夠滿足您的需求。

2

Unix domain sockets將是最快的,因爲它不會使用磁盤,並且沒有像TCP那樣的不必要開銷。

+0

Java不能在不使用第三方(本機)庫的情況下創建或訪問Unix域套接字 - 這使事情變得有點複雜。 – 2013-05-08 21:39:00