4

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

4

3 回答 3

3

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

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

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

于 2009-04-02T18:17:06.873 回答
2

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

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

http://parallelforkmgr.rubyforge.org/

于 2009-04-03T07:53:23.340 回答
1

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

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

于 2009-04-02T17:40:28.820 回答