从 Java 调用 Python 函数(没有 Jython,因为它太慢了。)
Calling Python Functions from Java (Without Jython, because it is too slow.)
我需要能够从 Java 调用 Python 函数,并获取这些函数的 return,它们应该只是原语。
我也不需要访问 Python 中的 Java 对象或其他类似的东西。
但是,最重要的是,我需要速度。我需要能够在我的应用程序开始时加载脚本,然后在不同的时间间隔调用一些函数,这有时会变得非常小(每秒 30-40 次)。
这就是我认为 Jython 不适合我的主要原因:它有各种我不需要的东西,而且速度非常慢。
所以,这些是 constraints/requirements 我有:
- 需要快
- 我需要调用 python 函数并获取它们的结果
- 脚本应该只加载一次
你们知道另一种在预加载脚本中简单地调用 Python 函数的方法吗(这样就不必为每个函数调用一次又一次地加载脚本)?
(PS: 我不认为这是重复的,因为我搜索了很多,我找到的所有链接都没有回答我的问题(例如 Calling Python in Java?))
您可以编写一些 JNI 代码来嵌入 CPython 解释器。
您可以编写一个 Python 程序,将 运行 作为守护程序(或 Web 服务或其他)并通过某种网络连接到它。我在这里故意含糊其词,因为这是一个具有多种可能性的广泛问题。
我不知道以上任何一个实际上是否比调用 Jython 更快。请注意,您可以加载一次 Jython 解释器并(重新)将其用于每个函数调用。
如果您在 Java 中重写 Python 函数会怎样?如果这是您尝试组合多种语言的原因,您甚至可以动态加载它。或者,Java8 带有一个(新的)Java脚本引擎。您可以使用 JavaScript 而不是 Python.
我需要能够从 Java 调用 Python 函数,并获取这些函数的 return,它们应该只是原语。
我也不需要访问 Python 中的 Java 对象或其他类似的东西。
但是,最重要的是,我需要速度。我需要能够在我的应用程序开始时加载脚本,然后在不同的时间间隔调用一些函数,这有时会变得非常小(每秒 30-40 次)。
这就是我认为 Jython 不适合我的主要原因:它有各种我不需要的东西,而且速度非常慢。
所以,这些是 constraints/requirements 我有:
- 需要快
- 我需要调用 python 函数并获取它们的结果
- 脚本应该只加载一次
你们知道另一种在预加载脚本中简单地调用 Python 函数的方法吗(这样就不必为每个函数调用一次又一次地加载脚本)?
(PS: 我不认为这是重复的,因为我搜索了很多,我找到的所有链接都没有回答我的问题(例如 Calling Python in Java?))
您可以编写一些 JNI 代码来嵌入 CPython 解释器。
您可以编写一个 Python 程序,将 运行 作为守护程序(或 Web 服务或其他)并通过某种网络连接到它。我在这里故意含糊其词,因为这是一个具有多种可能性的广泛问题。
我不知道以上任何一个实际上是否比调用 Jython 更快。请注意,您可以加载一次 Jython 解释器并(重新)将其用于每个函数调用。
如果您在 Java 中重写 Python 函数会怎样?如果这是您尝试组合多种语言的原因,您甚至可以动态加载它。或者,Java8 带有一个(新的)Java脚本引擎。您可以使用 JavaScript 而不是 Python.