请问 Java 调用 Python 有什么成熟的方案吗

2019-07-30 13:12:14 +08:00
 Kontinue

目前,深度学习都是用 python 写的,基础模型训练好之后,需要包成服务的形式去提供给客户。目前服务这边用的是 spring boot。但是找了一圈基本上没发现成熟的调用方法,jython 也很久没更新了。请问有什么好的解决方案吗?

4780 次点击
所在节点    程序员
25 条回复
zhuangzhuang1988
2019-07-30 13:18:46 +08:00
看下 spark 用的啥和 python 交互的?!
reus
2019-07-30 13:20:01 +08:00
jni 啊,还能怎样

jni -> C -> python C api -> python
kaedea
2019-07-30 13:20:28 +08:00
命令行调用,args 传参,stdout 返回
wenzhoou
2019-07-30 13:20:39 +08:00
http 吧
oblivion
2019-07-30 13:27:20 +08:00
https://github.com/keijack/python-eureka-client

我司目前是做成微服务,注册到 Eureka,Spring Boot 这边直接 Feign 调用的
jingxyy
2019-07-30 13:28:32 +08:00
走 rpc 吧
lihongjie0209
2019-07-30 13:32:04 +08:00
rpc http mq 选一个
shidenggui
2019-07-30 13:33:06 +08:00
Python 调用 Java 有个 jpype 挺方便的,反过来就不清楚了。rpc 或者 http 应该是比较方便的吧。
nnnToTnnn
2019-07-30 13:33:11 +08:00
rpc
Kontinue
2019-07-30 13:38:04 +08:00
@reus 目前暂时就是这么在做的
reus
2019-07-30 13:48:48 +08:00
@Kontinue 这些都很成熟的了
ioiogoo
2019-07-30 13:59:08 +08:00
如果只是用 Python 训练模型,Java 调用模型预测的话,可以考虑直接用 Java 加载模型完成预测过程,也就是个解析模型,然后根据模型参数运算的过程。
如果是想用 Java 调用 TensorFlow、Keras 等训练之后的模型,可以参考文章: https://www.ioiogoo.cn/2018/04/03/java%e8%b0%83%e7%94%a8keras%e3%80%81tensorflow%e6%a8%a1%e5%9e%8b/
wzwwzw
2019-07-30 14:05:45 +08:00
走 RPC 或者 HTTP 吧,命令性调用也行。
STRRL
2019-07-30 14:17:00 +08:00
冒昧问一下。。lz 是平安银行的吗
guoyuchuan
2019-07-30 14:19:12 +08:00
HTTP 不行吗
Kontinue
2019-07-30 14:28:46 +08:00
@STRRL 不是
roricon
2019-07-30 14:42:04 +08:00
最简单的就是学 Storm 的方式,fork 出一个进程,然后用 stdin stdout 交互。
可行,我们生产上跑的模型就是用这种方式……
qq976739120
2019-07-30 14:44:20 +08:00
java 调用命令行,然后命令行里跑 python 脚本,这是最方便的
janxin
2019-07-30 14:46:00 +08:00
rpc/http ?
flyingghost
2019-07-30 15:00:40 +08:00
两个异构子系统没必要直接调来调去啊。强扭的瓜不甜。
作为两个可执行程序,命令行就是个交互接口。
作为两个进程,有进程间通讯机制。
作为两个服务,有 http/rpc 接口或者 mq 做同步 /异步调用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/587466

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX