java - 从java调用python

标签 java python jython

我需要从 Java 调用一些 Python 代码。

我知道 Jython 存在或者 Java 有自己的 Python 解释器。

事实是,Python 代码使用了一些 native (C) 编译代码,甚至在 GPU 上运行某些代码。

所以我可以将其分为两个问题:

  1. Jython 或 Java 的 Python 解释器支持此功能吗?也就是说,Python 代码(当从 Java 调用时)将与所有 C 和 GPU 部分一起运行,因此运行速度大致与它自己的运行速度一样快。
  2. 如果上述方法都不支持,还有其他方法吗?

附注如果这有帮助的话,尽管我认为这无关紧要,但我需要运行的代码是来自 Keras 的高度 GPU/C 优化的神经网络(下面有 TensorFlow)。我绝对无法运行仅 Python 解释的版本。

最佳答案

目前 jython 不支持 native 编译的 python 模块。为了运行 native 模块,您需要从 java 访问 native python(cpython) 解释器。有几个开源项目使用 JNI 来访问 cpython 解释器。您可以查看的三个项目是 JEP , JPY ,和JyNI 。关于 GPU 访问,我只有 JEP 的经验,我曾将 JEP 与 PyCUDA 一起使用来在 GPU 上执行代码。虽然我没有使用 TensorFlow 的个人经验,但我知道 JEP 邮件列表上有关于使用 JEP 和 TensorFlow 的帖子,因此我相信还有其他项目成功地使用了这种组合。

关于java - 从java调用python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47705222/

相关文章:

java - 如何在 RecyclerView 的一项中找到两个文本 block ?

python - 小数(-1)是什么意思?

java - 将 Jython 代码转换为 Java 类

java - 在 Java 中使用哪个集合?

javax.persistence.PersistenceException : org. hibernate .MappingException : Unknown entity: it. *.PoolStateResult |在 DTO(而非实体)中映射结果

Python:除了来自外部函数的参数之外,还使用 ​​argparse 读取命令行参数

python - 使用正则表达式和 python 在地址 block 中移动城市,添加 & 符号

java - java 到 python 的最新通信

python - 有没有办法在 Pydev 中运行 Python 代码?

java - 墙壁上的 Pong 反射