讨教一个关于 go 程序和 Python 程序交互的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Gocobnus
V2EX    程序员

讨教一个关于 go 程序和 Python 程序交互的问题

  •  
  •   Gocobnus 2024-05-23 11:35:01 +08:00 2822 次点击
    这是一个创建于 509 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己做的 ai 项目,本来是通过 go 写的后端代码,但是最近了解到微软的 autogen(基于 python)支持 agent 比较好,就想使用 autogen 来进行 agent 的开发,通过 go 的服务和 python 代码交互,于是就出现一个问题,go 的服务如何和 python 交互,我的需求不涉及到流式返回,也不涉及到太大的文件返回,现在有两种思路 1.通过 cmd 运行获取 std 输出 2.让 python 和 go 通过网络通信

    25 条回复    2024-05-24 12:42:31 +08:00
    zzhaolei
        1
    zzhaolei  
       2024-05-23 12:25:54 +08:00
    可以通过 go python binding 调用 py 的代码,但是很多项目都不维护了。

    也可以考虑进程间通信那些方式来交换数据
    deplives
        2
    deplives  
       2024-05-23 12:57:06 +08:00
    面试题:进程间通信都有那些方式
    txzh007
        3
    txzh007  
       2024-05-23 14:07:05 +08:00
    走 socket 吧
    Ally
        4
    Ally  
       2024-05-23 14:10:42 +08:00
    gRPC
    aababc
        5
    aababc  
       2024-05-23 14:15:26 +08:00
    七牛的 许老师 最近在搞 llgo 好像就是这方面的内容,应该是直接在代码层面的。可以了解一下看看
    NessajCN
        6
    NessajCN  
       2024-05-23 14:25:42 +08:00
    named pipe
    unix domain socket
    tcp socket
    sophos
        7
    sophos &nbp;
       2024-05-23 14:28:43 +08:00
    跨语言交互如果不是需要极端性能或者 ffi binding 方案很成熟,优选网络通信

    http+json 或 grpc 都挺好 :-) python 和 go 都有很成熟的框架了
    yaott2020
        8
    yaott2020  
       2024-05-23 14:28:45 +08:00 via Android
    加一种:CGO ,但是楼主应该不需要
    wen20
        9
    wen20  
       2024-05-23 14:33:20 +08:00
    选 cmd 运行呗,不用改 python, 对接其他 python 命令规范还能保持一样。
    noooop
        10
    noooop  
       2024-05-23 14:36:06 +08:00
    谢邀,用 zeromq ,正好我现在做一个开源库,基于 zmq 的大语音模型微服务框架。https://github.com/noooop/zerollama
    noooop
        11
    noooop  
       2024-05-23 14:41:31 +08:00
    typo

    谢邀,用 zeromq ,正好我现在做一个开源库,基于 zmq 的大语言模型微服务框架。https://github.com/noooop/zerollama

    @noooop
    flyqie
        12
    flyqie  
       2024-05-23 14:43:59 +08:00 via Android
    进程间通信。

    最好不要进 binding 这个大坑。
    zjsxwc
        13
    zjsxwc  
       2024-05-23 14:45:37 +08:00
    以前一个项目也是 go 与 python 相互调用,我用了 redis 里 topic 的 sub/pub
    lambdaq
        14
    lambdaq  
       2024-05-23 14:59:11 +08:00   1
    路过。小 tip:头像为二次元大佬推荐的都比较靠谱~~~~
    roundgis
        15
    roundgis  
       2024-05-23 15:02:39 +08:00 via Android
    zeromq

    or

    redis
    iyaozhen
        16
    iyaozhen  
       2024-05-23 15:07:17 +08:00
    面试造火箭还是有点用的

    一般来说就 http 最方便了 python 起个服务,后面要转流式( base http/3 )也方便
    xsen
        17
    xsen  
       2024-05-23 16:18:23 +08:00
    @iyaozhen #16 跟面试造火箭有一毛钱关系

    MQ 类( nsq/nats/kafka/rbbitmq 等等,包括 gRPC )就是用来做类似东西的
    iosyyy
        18
    iosyyy  
       2024-05-23 17:17:23 +08:00
    @xsen mq 也太重了 不可取
    haiku
        19
    haiku  
       2024-05-23 17:18:29 +08:00 via Android
    grpc ,可以用 unix 。socket 减少网络延迟
    Peven
        20
    Peven  
       2024-05-23 18:15:40 +08:00 via iPhone
    grpc protobuffer
    void00000
        21
    void00000  
       2024-05-23 18:19:22 +08:00
    简单就用 tcp 通信就行了,然后数据用 \n 结尾,方便易用
    ilylx2008
        22
    ilylx2008  
       2024-05-23 19:47:22 +08:00
    不引入第三方基础设施比如 redis 的话,

    可以使用 zmq ,类似的,也可以走 websocket 协议。
    ilylx2008
        23
    ilylx2008  
       2024-05-23 19:47:40 +08:00
    grpc 相对 zmq 都麻烦很多。
    xsen
        24
    xsen  
       2024-05-24 07:21:24 +08:00
    @iosyyy #18 nsq/nats 都是轻量级的 mq ,要么 mqtt 也可以
    iyaozhen
        25
    iyaozhen  
       2024-05-24 12:42:31 +08:00
    @xsen 面试不就会问这些嘛 以及这些方案的优劣
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1075 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:06 PVG 07:06 LAX 16:06 JFK 19:06
    Do have faith in what you're doing.
    ubao 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