在java和python之间传递数据
问题描述:
道歉,如果我的问题是noob。我使用的是pgsql 8.4运行Django 1.2,我需要在从用户那里获得输入后运行Java程序,进行一些计算并将结果返回给用户。在java和python之间传递数据
我可以知道在Java和Python Django之间传递数据的最佳方式是什么,以便上述场景得到处理?我听说过Jython,但根据Django文档,它需要扩展jython-Django,但目前它不支持django 1.2.x.我应该使用stdout传递数据吗?
感谢人们听我说。
答
使用subprocess并运行Java程序作为一个简单的子进程。它非常非常简单,速度也相当快。
如果您需要做更具扩展性的事情,您应该考虑用您的Java代码创建glassfish服务器,以便您的Python可以向Java发出Web服务请求。这是更具可扩展性,但也更多的工作。
答
您还可以使用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不启动jvm,它只是连接到已经启动的Java进程。
答
这可能是你想要避免的。 但以最简单的方式,使用套接字/共享文件与Java将是最好的解决方案。 python套接字可以发送信息并从java中修改它。另一方面,如果那感觉像痛苦。如果您在同一台计算机上使用java和python,则可以使用共享文件,该java可以读取,而python可以读取。
@洛特,谢谢你的建议。关于子进程,我如何将计算结果返回给Python? – goh 2010-11-01 10:34:03
@goh:沟通渠道仅限于您的想象力。从文件开始。普通的旧文件。 Django写入文件,Java应用程序读取文件并写入新文件。你可以使用管道。您大概可以在谷歌搜索“进程间通信”并找到两个进程可以通信的其他六种方式。您的操作系统API包含文件和管道以外的多种机制。 – 2010-11-01 11:00:25