首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java和python之间传递数据

在java和python之间传递数据
EN

Stack Overflow用户
提问于 2010-11-01 18:20:20
回答 4查看 5K关注 0票数 5

如果我的问题是菜鸟,很抱歉。我正在运行Django 1.2和pgsql 8.4,在从用户获得输入后,我需要运行一个Java程序,执行一些计算并将结果返回给用户。

我想知道在Java和Python Django之间传递数据的最佳方式是什么,以便处理上述场景?我听说过Jython,但根据Django文档,它需要扩展jython- django,但目前它不支持django 1.2.x。我应该使用stdout传递数据吗?

谢谢大家听我说完。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-01 18:28:24

使用subprocess并将Java程序作为一个简单的子进程运行。它非常,非常简单,并且相当快。

如果您需要做一些更具伸缩性的事情,您应该考虑使用您的Java代码创建一个glassfish服务器,这样您的Python就可以向Java发出web服务请求。这是更可伸缩的,但也有更多的工作。

票数 4
EN

Stack Overflow用户

发布于 2010-11-01 21:34:15

如果您所做的只是调用Java进行一些计算,那么subprocess是最简单的方法,但我只是想抛出另一个选项。

JPype是一个包,它允许您在Python程序中运行JVM,同时像调用Python (example)一样调用Java代码。

也就是说,它与Jython类似,因为您可以直接调用Java代码,而与子进程类似,因为您实际运行的是CPython。如果由于某些原因,不容易从shell脚本(也称为子进程)调用JPype代码,或者需要进行大量的双向通信,则可以考虑使用Java。

票数 5
EN

Stack Overflow用户

发布于 2015-09-05 03:59:01

您还可以使用Py4J执行此任务:

代码语言:javascript
复制
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进程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4068052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档