什么是并行运行Ruby脚本的正确方法?

Dav*_*wer 0 ruby automation ruby-on-rails

目前我有以下代码在ruby脚本中运行一些ruby脚本:

def run(base_directory, run_count)
  working_directory = base_directory.gsub("\n","")
  for i in 1..run_count
    system("ruby " + working_directory + i.to_s + "\\" + "main.rb " +   working_directory + i.to_s + "\\")
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,这会按顺序运行脚本,但我需要它们并行运行.我有10个脚本要运行,我想一次运行5个脚本,直到我达到需要运行的脚本数量.有没有一种简单的方法来实现这一目标?

小智 5

刚发现这个宝石平行.您可能必须像这样运行它:

results = Parallel.map(run_count.downto(1).to_a, :in_processes=>run_count){|i| system("ruby " + working_directory + i.to_s + "\\" + "main.rb " +   working_directory + i.to_s + "\\") }
Run Code Online (Sandbox Code Playgroud)

  • @DavidBrewer:您可以尝试在Windows服务器上安装sygwin并使用它运行面向Linux的gem.Sygwin是我在转换到Ubuntu之前在Windows下尝试过的第二件事,它在一段时间内运行良好,但最后sygwin也有其局限性. (2认同)