从 java 呼叫 python

calling python from java

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

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

事实是,Python 代码使用一些本机 (C) 编译代码,甚至 运行GPU 上的一些东西。

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

  1. Jython 或 Java 的 Python 解释器支持这个吗?也就是说,Python 代码(当从 Java 调用时)将 运行 包含所有 C 和 GPU 部分,因此 运行 与它自己的代码大致一样快.
  2. 如果以上两种方式都不支持,还有其他方式吗?

P.S。如果这有帮助,虽然我认为它无关紧要,但我需要 运行 的代码是来自 Keras(下面有 TensorFlow)的高度 GPU/C 优化的神经网络。我绝对买不起 运行 唯一的 Python 解释版本。

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