Python与Java之间的进程间通信
首先,简单说一下我为什么会问这个问题:我正在写一个Python程序(用wxPython做界面),需要从Python里调用一个Java AWT程序,并从中提取数据。在Windows上,我已经有一个可以工作的解决方案。在OSX上,只要我以无头模式运行Java应用程序,我也有一个可行的方案。不过,我发现没有合理的方法可以在OSX上让两个图形界面(GUI)在同一个进程里运行,因为AWT和WX都想占用第一个线程,无法共享wx消息循环。
我想做的是在我的Python程序和Java程序之间启动一个单独的进程,并建立一个管道或者队列之类的东西,用来传递数据(特别是字节数组)来回交换。
如果能给我一些建议,或者指点我一下方向,我会非常感激,因为我对进程间通信(IPC)的经验非常有限。
7 个回答
3
命名管道可能是你要找的解决方案。可以看看这个链接:如何在Python中创建一个临时的FIFO(命名管道)?
4
这是谷歌用来在Java和Python之间进行进程间通信的开源解决方案。
推荐使用。
5
我尝试用管道来写一个解决方案,但发现管道不太适合用来发送多条消息,尤其是当消息中可能包含大量数据时。它们更适合用来开启一个“工作者”程序,这种程序可以运行、响应请求,然后结束。
在研究套接字编程时,我找到了一个很棒的资源,链接在这里:https://web.archive.org/web/20080913064702/http://www.prasannatech.net/2008/07/socket-programming-tutorial.html
这个教程展示了用四种语言编写的简单聊天程序的TCP和UDP版本。我最终使用并修改了TCP的Java客户端和Python服务器。