【问题标题】:Working with multiple processes in Ruby在 Ruby 中处理多个进程
【发布时间】:2010-10-17 04:23:31
【问题描述】:

是否有一个 Ruby 模块可以轻松地在多个进程之间共享对象?我正在寻找类似于 Python 的 multiprocessing 的东西,它支持可以在进程之间共享的进程安全队列和管道。

【问题讨论】:

    标签: ruby multiprocessing


    【解决方案1】:

    将 DRb(提供简单的进程间通信)与 Queue 或 SizedQueue(它们都是线程安全队列)结合起来,应该可以满足您的需求。

    您可能还想查看同样托管在 github 上的 beanstalkd

    【讨论】:

      【解决方案2】:

      我已经遇到过这个库,但我还没有尝试过。

      Parallel::ForkManager — 一个简单的并行处理分支管理器。

      http://parallelforkmgr.rubyforge.org/

      【讨论】:

        【解决方案3】:

        我认为您可以使用 Ruby IO 的功能做很多您想做的事情;您是在进程而不是线程之间共享,对吗?

        如果是这样,IO.pipe 将满足您的需求。 Ruby 没有任何内置的方式来处理跨进程队列(据我所知),但您也可以使用 FIFO(如果您使用的是 Unix)。

        如果您想要更细粒度的东西,并具有良好的线程支持,我相当肯定如果您使用 JRuby,您可以搭载 java.util.concurrent。 MRI 的线程/并发支持非常糟糕,所以如果这是您的目标,JRuby 可能是一个更好的选择。

        【讨论】:

        • 我在 perl 和 ruby​​ 中都使用过它。真是太棒了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-24
        • 1970-01-01
        • 1970-01-01
        • 2018-10-27
        • 2020-02-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多