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

本机多进程 rpc 通讯问题

  •  
  •   ray1888 ·
    ray1888 · Feb 2, 2018 · 4747 views
    This topic created in 3112 days ago, the information mentioned may be changed or developed.

    向 golang、java 这些语言为什么如果需要本机的多进程通信都要用 rpc 呢?远程使用 rpc 我可以理解,但是不太能理解为什么单机也用 rpc 来完成远程调用?但是向 python,就可以直接通过多进程队列去共享变量的内容。因为比较少些静态语言,求写静态语言的大神们来解答

    9 replies    2018-02-03 10:22:31 +08:00
    wwqgtxx
        1
    wwqgtxx  
       Feb 2, 2018 via iPhone
    因为 python 的多进程队列本身也是用 rpc 实现的呀
    wwqgtxx
        2
    wwqgtxx  
       Feb 2, 2018 via iPhone
    其实准确说应该是 ipc,rpc 是建立在 ipc 基础上的
    ray1888
        3
    ray1888  
    OP
       Feb 2, 2018
    @wwqgtxx 有相关的 pep 文档编号吗?我去看看
    neoblackcap
        4
    neoblackcap  
       Feb 2, 2018   ❤️ 1
    linux 下进程间的同步机制有哪些? - 陈硕的回答 - 知乎
    我的书第 3.4 节:进程间通信只用 TCP

    PS: 书是指《 Linux 多线程服务端编程 使用 muduo C++网络库 》
    woscaizi
        5
    woscaizi  
       Feb 2, 2018 via iPhone
    共享变量的方式耦合性太强了。
    billlee
        6
    billlee  
       Feb 2, 2018
    RPC 的意义在于接口标准化
    alqaz
        7
    alqaz  
       Feb 3, 2018
    统一,可扩展。
    wwqgtxx
        8
    wwqgtxx  
       Feb 3, 2018 via iPhone
    @ray1888 你自己看看 multiprocessing 模块的源代码不就知道了,multiprocessing.Manager()产生的就是 rpc 代理调用对象,当然如果你直接用 multiprocessing.Pipe()或者.Queue()那样的确是用进程管道实现的
    说到底 rpc 只是为了降低程序和操作系统的耦合度,如果用 socket 通讯这部分代码只用写一次,如果用本地 pipe,共享内存之类的方式,虽然效率能有所提高,但是适配的复杂度也大大提高了,很多情况下并没有必要
    ray1888
        9
    ray1888  
    OP
       Feb 3, 2018
    @wwqgtxx 好的,感谢,因为现在项目里面也有用 multiprocessing.manager 这个东西,待会认真看看这个代码
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5220 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:10 · PVG 17:10 · LAX 02:10 · JFK 05:10
    ♥ Do have faith in what you're doing.