我需要进行一些图像处理,这需要大量的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运算能力?
答案 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