我需要从 Java 调用一些 Python 代码。
我知道 Jython 存在或者 Java 有自己的 Python 解释器。
事实是,Python 代码使用了一些 native (C) 编译代码,甚至在 GPU 上运行某些代码。
所以我可以将其分为两个问题:
- Jython 或 Java 的 Python 解释器支持此功能吗?也就是说,Python 代码(当从 Java 调用时)将与所有 C 和 GPU 部分一起运行,因此运行速度大致与它自己的运行速度一样快。
- 如果上述方法都不支持,还有其他方法吗?
附注如果这有帮助的话,尽管我认为这无关紧要,但我需要运行的代码是来自 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/