在Java和Python之间传递数据

5 投票
4 回答
5823 浏览
提问于 2025-04-16 06:23

抱歉如果我的问题有点初级。我正在使用Django 1.2和pgsql 8.4,我需要在用户输入后运行一个Java程序,进行一些计算,然后把结果返回给用户。

请问在Java和Python Django之间传递数据的最佳方法是什么,以便能处理上述情况?我听说过Jython,但根据Django的文档,它需要一个叫jython-Django的扩展,但目前不支持django 1.2.x。我应该通过标准输出(stdout)来传递数据吗?

谢谢大家听我说。

4 个回答

0

你也可以用Py4J来完成这个任务:

from py4j.java_gateway import JavaGateway
gateway = JavaGateway()                        # connect to the JVM
gateway.jvm.java.lang.System.out.println('Hello World!')

你应该先启动Java程序,然后再从Python调用Java的方法。

py4j并不会启动Java虚拟机,它只是连接到已经启动的Java进程。

5

如果你只是想用Java做一些计算,那么使用子进程是最简单的方法。不过,我想再给你介绍一个其他的选择。

JPype是一个可以让你在Python程序里运行Java虚拟机的工具,这样你就可以像调用Python代码一样调用Java代码(示例)。

简单来说,它和Jython很像,因为你可以直接调用Java代码;同时又像子进程,因为你实际上是在运行CPython。如果因为某些原因,Java代码不容易通过脚本调用(也就是子进程),或者需要大量双向交流的话,可以考虑使用JPype。

4

使用 subprocess 模块,可以把Java程序当作一个简单的子进程来运行。这非常简单,而且速度也不错。

如果你需要做一些更大规模的事情,可以考虑创建一个 glassfish 服务器,把你的Java代码放在里面,这样你的Python就可以向Java发送网络请求。这种方法更适合大规模应用,但也需要更多的工作。

撰写回答