2014-05-11 26 views
0

我有一些图像处理要做,涉及大量的CPU处理。在ruby 1.9 MRI中调度多线程进程?

目前我有一个红宝石脚本,它可以处理嘎吱嘎吱的声音,但它一次只能处理一个图像。我知道我可以使用线程来使事情变得有点平行,但在MRI中,似乎仍然不会实际触及多个处理器(?)

因此,目前我做的相当笨拙:

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

它的工作原理,它比线程快得多...但它不是太漂亮。

那么,有没有更优雅的方式来派发红宝石进程招聘尽可能多的CPU处理能力?使用fork

回答

1

尝试:

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 
+0

哇 - 我怎么会不知道吗?宏伟 - 非常感谢乌里! – PlankTon