• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Kontinue
V2EX  ›  程序员

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

  •  1
     
  •   Kontinue · Jul 30, 2019 · 5855 views
    This topic created in 2505 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   ·   3410 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 169ms · UTC 00:34 · PVG 08:34 · LAX 17:34 · JFK 20:34
    ♥ Do have faith in what you're doing.