在Ruby中使用多个进程

时间:2009-04-02 17:35:31

标签: ruby multiprocessing

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

3 个答案:

答案 0 :(得分:3)

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

如果是这样的话,IO.pipe会做你需要的。 Ruby没有任何内置的处理跨进程队列的方法(据我所知),但你也可以使用FIFO(如果你在Unix上)。

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

答案 1 :(得分:2)

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

Parallel :: ForkManager - 一个简单的并行处理fork管理器。

http://parallelforkmgr.rubyforge.org/

答案 2 :(得分:1)

将提供简单的进程间通信的DRb与线程安全队列的Queue或SizedQueue相结合,可以满足您的需求。

您可能还想查看beanstalkd

上托管的github