请问 Java 调用 Python 有什么成熟的方案吗 - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
Kontinue

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

  •  1
     
  •   Kontinue Jul 30, 2019 5824 views
    This topic created in 2486 days ago, the information mentioned may be changed or developed.

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

    25 replies    2023-03-23 11:34:37 +08:00
    zhuangzhuang1988
        1
    zhuangzhuang1988  
       Jul 30, 2019
    看下 spark 用的啥和 python 交互的?!
    reus
        2
    reus  
       Jul 30, 2019
    jni 啊,还能怎样

    jni -> C -> python C api -> python
    kaedea
        3
    kaedea  
       Jul 30, 2019 via Android
    命令行调用,args 传参,stdout 返回
    wenzhoou
        4
    wenzhoou  
       Jul 30, 2019 via Android
    http 吧
    oblivion
        5
    oblivion  
       Jul 30, 2019
    https://github.com/keijack/python-eureka-client

    我司目前是做成微服务,注册到 Eureka,Spring Boot 这边直接 Feign 调用的
    jingxyy
        6
    jingxyy  
       Jul 30, 2019
    走 rpc 吧
    lihongjie0209
        7
    lihongjie0209  
       Jul 30, 2019
    rpc http mq 选一个
    shidenggui
        8
    shidenggui  
       Jul 30, 2019
    Python 调用 Java 有个 jpype 挺方便的,反过来就不清楚了。rpc 或者 http 应该是比较方便的吧。
    nnnToTnnn
        9
    nnnToTnnn  
       Jul 30, 2019
    rpc
    Kontinue
        10
    Kontinue  
    OP
       Jul 30, 2019
    @reus 目前暂时就是这么在做的
    reus
        11
    reus  
       Jul 30, 2019
    @Kontinue 这些都很成熟的了
    ioiogoo
        12
    ioiogoo  
       Jul 30, 2019
    如果只是用 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
        13
    wzwwzw  
       Jul 30, 2019
    走 RPC 或者 HTTP 吧,命令性调用也行。
    STRRL
        14
    STRRL  
       Jul 30, 2019 via Android
    冒昧问一下。。lz 是平安银行的吗
    guoyuchuan
        15
    guoyuchuan  
       Jul 30, 2019
    HTTP 不行吗
    Kontinue
        16
    Kontinue  
    OP
       Jul 30, 2019
    @STRRL 不是
    roricon
        17
    roricon  
       Jul 30, 2019   1
    最简单的就是学 Storm 的方式,fork 出一个进程,然后用 stdin stdout 交互。
    可行,我们生产上跑的模型就是用这种方式……
    qq976739120
        18
    qq976739120  
       Jul 30, 2019
    java 调用命令行,然后命令行里跑 python 脚本,这是最方便的
    janxin
        19
    janxin  
       Jul 30, 2019 via iPad
    rpc/http ?
    flyingghost
        20
    flyingghost  
       Jul 30, 2019
    两个异构子系统没必要直接调来调去啊。强扭的瓜不甜。
    作为两个可执行程序,命令行就是个交互接口。
    作为两个进程,有进程间通讯机制。
    作为两个服务,有 http/rpc 接口或者 mq 做同步 /异步调用。
    Raymon111111
        21
    Raymon111111  
       Jul 30, 2019
    http 吧简单

    rpc 也可以, grpc 了解一下
    wwqgtxx
        22
    wwqgtxx  
       Jul 30, 2019 via iPhone
    tcp 或者 unix socket 呗,又简单又可靠
    lkan
        23
    lkan  
       Jul 30, 2019 via iPhone
    你们说的 http 是套接字 socket 吗
    ffeii
        24
    ffeii  
       Jul 30, 2019
    今天了解到这个: https://www.graalvm.org/
    25OHd2qObJmJ6P10
        25
    25OHd2qObJmJ6P10  
       Mar 23, 2023
    @ffeii 不实用啊,实例化一个 Context 就得一秒多,并发下扛不住
    About     Help     Advertise     Blog     API     FAQ     Solana     5259 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 77ms UTC 07:37 PVG 15:37 LAX 00:37 JFK 03:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86