有这么一个命题,就是说后端算法部门,使用了TensorFlow等机器学习算法进行了数据预测,现在有个需求,就是说要通过浏览器页面输入相关的计算参数,然后返回计算结果,理论上呢,python也可以作为一个web服务器来开发,但是算法部门的同事不会相关的技术。我后台语言使用的是java,那么如何通过java调用python进行计算呢?或者说,如何把python web集成到java的微服务框架中呢?python和java如何更好的交互,带着这样的问题,开始了这篇文章的探索。
主要有三种方式:
(1) 使用java的库JPython,直接执行python语言,但是Jpython也有缺点
不支持 Python3.0 以上的语法
python 源码中若引用的第三方库包含 C 语言扩展,将无法提供支持,如 numpy 等
(2) 使用Python作为微服务,提供web响应,实现起来简单。但是效率比较低,成本比较高。可以使用Tornado,还有Flask、Django等Python Web服务器。
(3) 将Python使用CPython库转换为c代码,然后使用JNI进行调用。虽然效率高,但是实现的步骤相当复杂,还不一定能成。
参考文章:
1.Java调用Python程序方法总结 (通过jython这个库直接执行python语句)
2.Python写的微服务如何融入Spring Cloud体系? (微服务的概念突破了语言的限制,所以也可以通过Python实现微服务,并融入到Java的生态中去。这篇文章使用了Tornado作为python的服务器实现,使用

本文探讨了在Java后端中如何与Python进行交互以执行机器学习算法。主要介绍了四种方法:1) 使用JPython库直接执行Python代码,但不支持Python3及以上语法和部分第三方库;2) 利用Python作为微服务,通过Tornado等Web服务器与Java集成,但效率较低;3) 使用CPython和JNI,效率高但实现复杂;4) 通过Socket服务进行Java和Python间的通信,简洁但可能不够健壮。文章还提供了相关参考资料。
最低0.47元/天 解锁文章
1148

被折叠的 条评论
为什么被折叠?



