从python调用java代码
我正在一个python项目中尝试优化一些自然语言处理的性能。基本上,我希望将计算密集型部分外包给使用ApacheOpenNLP的公司,它是用Java编写的 我的问题是将Java函数/类链接回python代码的推荐方法是什么?我想到的三个主要方法是从python调用java代码,java,python,performance,opennlp,Java,Python,Performance,Opennlp,我正在一个python项目中尝试优化一些自然语言处理的性能。基本上,我希望将计算密集型部分外包给使用ApacheOpenNLP的公司,它是用Java编写的 我的问题是将Java函数/类链接回python代码的推荐方法是什么?我想到的三个主要方法是 在python中使用C/C++绑定,然后在我的C程序中嵌入JVM。这就是我所倾向的,因为我对编写python的C扩展有点熟悉,但是使用一个三角形的语言,其中C只起中介作用,似乎不太正确 使用Jython。我主要担心的是,据我所知,CPython是非常
- 在python中使用C/C++绑定,然后在我的C程序中嵌入JVM。这就是我所倾向的,因为我对编写python的C扩展有点熟悉,但是使用一个三角形的语言,其中C只起中介作用,似乎不太正确
- 使用Jython。我主要担心的是,据我所知,CPython是非常流行的python实现,我不想破坏与其他协作者或包的兼容性
- 对OpenNLP附带的二进制文件进行流式输入和输出。Apache提供了令牌化器和独立二进制文件,您可以通过管道将数据传输到其中或从中传输出去。这可能是最容易实现的选择,但似乎也是最粗糙的选择
谢谢 考虑使用现有的独立于语言的RPC mecahnism(thirift,…)构建java服务器。并使用python作为RPC客户端与服务器进行对话。它具有松散耦合。嗯,我认为绑定的性能在这里并不重要。。。大部分时间都会花在OepnNLP自己身上,对吧?我不知道-你告诉我:一件事要考虑的是代码当前的方式,我经常调用OpenNLP来一次处理小的文本块,所以我认为优化绑定可能是重要的。(虽然从理论上讲,重组我现有的代码以减少调用的发生当然是可能的。)我也只是好奇这种场景的“最佳实践”是什么,在这种情况下,你会告诉我;)如果块很小并且处理得很快,那么是的,“跨语言调用”的开销这确实是一件需要考虑的事情。调用庞大的Java优化性能听起来有点矛盾。但是让我们知道你的结果。