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

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

  •  
  •   Gocobnus · 217 天前 · 2228 次点击
    这是一个创建于 217 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己做的 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  
       217 天前
    可以通过 go python binding 调用 py 的代码,但是很多项目都不维护了。

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

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

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

    @noooop
    flyqie
        12
    flyqie  
       217 天前 via Android
    进程间通信。

    最好不要进 binding 这个大坑。
    zjsxwc
        13
    zjsxwc  
       217 天前
    以前一个项目也是 go 与 python 相互调用,我用了 redis 里 topic 的 sub/pub
    lambdaq
        14
    lambdaq  
       217 天前   ❤️ 1
    路过。小 tip:头像为二次元大佬推荐的都比较靠谱~~~~
    roundgis
        15
    roundgis  
       217 天前 via Android
    zeromq

    or

    redis
    iyaozhen
        16
    iyaozhen  
       217 天前
    面试造火箭还是有点用的

    一般来说就 http 最方便了 python 起个服务,后面要转流式( base http/3 )也方便
    xsen
        17
    xsen  
       217 天前
    @iyaozhen #16 跟面试造火箭有一毛钱关系

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

    可以使用 zmq ,类似的,也可以走 websocket 协议。
    ilylx2008
        23
    ilylx2008  
       217 天前
    grpc 相对 zmq 都麻烦很多。
    xsen
        24
    xsen  
       216 天前
    @iosyyy #18 nsq/nats 都是轻量级的 mq ,要么 mqtt 也可以
    iyaozhen
        25
    iyaozhen  
       216 天前
    @xsen 面试不就会问这些嘛 以及这些方案的优劣
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1769 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.