在ruby 1.9 MRI中调度多线程进程?

时间:2014-05-11 17:38:34

标签: ruby multithreading parallel-processing

我需要进行一些图像处理,这需要大量的CPU处理。

目前我有一个执行嘎吱嘎吱声的ruby脚本,但它一次只执行一个图像。我知道我可以使用线程来使事情变得有点平行,但在MRI中,似乎仍然不会真正击中多个处理器(?)

所以,目前我做的很笨拙:

system("ruby image_runner.rb 0 1 3  & ruby image_runner.rb 3 2 3 & ruby image_runner.rb 6 3 3")

它有效,它比线程快得多......但它不太漂亮。

那么,是否有更优雅的方式来调度ruby进程以尽可能多地吸收CPU运算能力?

1 个答案:

答案 0 :(得分:1)

尝试使用fork

image_runner.rb

[[0,1,3], [3,2,3], [6,3,3]].each do |x, y, z|
  Process.fork do 
    # ... do work for x, y, z
  end
end