在搜索一个从Django应用程序(python)运行Java代码的选项后,我发现Py4J对我来说是最好的选择。我试过Jython,JPype和Python子流程,并且它们每个都有一定的局限性:Py4J的开销比Jython和JPype更大
- Jython。我的应用程序在Python中运行。
- JPype是越野车。您可以在启动JVM之后再次启动JVM。
- Python子流程。由于定期的控制台调用,无法在Python和Java之间传递Java对象。
在Py4J网站上写的是:
在性能方面,Py4J比都以前的解决方案(Jython和JPype)的一个更大的开销,因为它依赖于插座,但如果表现对您的应用程序至关重要,从Python程序访问Java对象可能不是最好的主意。
在我的应用程序性能非常关键,因为我正在使用机器学习框架Mahout。我的问题是:由于Py4J网关服务器,Mahout也会运行得更慢,或者这种开销意味着从Python函数调用Java方法会更慢(后者Mahout的性能不会成为问题,我可以使用Py4J)。
您是否真的需要多次启动JVM?为什么? – bastian