在 Ruby 中处理多个进程
Posted
技术标签:
【中文标题】在 Ruby 中处理多个进程【英文标题】:Working with multiple processes in Ruby 【发布时间】:2010-10-17 04:23:31 【问题描述】:是否有一个 Ruby 模块可以轻松地在多个进程之间共享对象?我正在寻找类似于 Python 的 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 中都使用过它。真是太棒了。以上是关于在 Ruby 中处理多个进程的主要内容,如果未能解决你的问题,请参考以下文章