从Java调用Python函数(没有Jython,因为它太慢了。)

时间:2015-10-22 12:51:06

标签: java python performance jython

我需要能够从Java调用Python函数,并获得这些函数的返回,这些函数应该只是原语。我也不需要在Python或其他类似的东西中访问Java对象。
但是,最重要的是,我需要速度。我需要能够在我的应用程序开始时加载脚本,然后以不同的时间间隔调用一些函数,有时可能会非常小(每秒30-40次)。这就是为什么我不认为Jython会为我工作的主要原因:它有各种我不需要的东西,而且速度极慢。

所以,这些是我的约束/要求:

  • 需要快速
  • 我需要调用python函数并获得结果
  • 该脚本只能加载一次

你们是否知道另一种简单地在预先加载的脚本中调用Python函数的方法(这样就不必为每个函数调用一次又一次地加载脚本)?

(PS:我不认为这是重复的,因为我搜索了很多,而且我找到的所有链接都没有回答我的问题(例如Calling Python in Java?))

1 个答案:

答案 0 :(得分:1)

您可以编写一些JNI代码来嵌入CPython解释器。

您可以编写一个Python程序,它将作为守护程序(或Web服务或其他)运行,并通过某种网络连接到它。我在这里故意模糊,因为这是一个广泛的问题,有许多可能性。

我不知道上述任何一个实际上都比调用Jython更快。请注意,您可以加载Jython解释器一次,然后(重新)将其用于每个函数调用。

如果用Java重写了Python函数怎么办?如果这是您尝试组合多种语言的原因,您甚至可以动态加载它。或者,Java8附带一个(新的)JavaScript引擎。您可以使用JavaScript而不是Python。