我有一个如下所示的 .sh 文件:
ruby one.rb
ruby two.rb
ruby three.rb
ruby four.rb
ruby five.rb
ruby six.rb
ruby seven.rb
ruby eight.rb
这样做是一个一个地运行 ruby 文件。我将如何同时启动前四个,并且在前四个完成后立即抓住下一组。不知道如何处理这个,任何建议表示赞赏。我想暂时避免使用 rake 并继续使用 shell。
您是否尝试过使用&
and wait
?
ruby one.rb &
ruby two.rb &
ruby three.rb &
ruby four.rb &
wait
ruby five.rb &
ruby six.rb &
ruby seven.rb &
ruby eight.rb &
创建一个如下所示的文本文件:
one.rb
two.rb
three.rb
...等等。称之为“工作”或任何你想要的。然后,假设您正在运行 Ubuntu 或类似系统:
sudo apt-get install parallel
parallel ruby < jobs
有关parallel
命令的信息可在此处获得:http ://www.gnu.org/software/parallel/
不要避免耙。现在学习,以后受益。
require 'rake'
run = -> sym { system "ruby #{sym}.rb" }
u, v = [:one, :two, :three, :four ], [:five, :six, :seven, :eight]
u.each { |sym| task sym do run.( sym ) end }
multitask midpoint: u
v.each { |sym| task sym => :midpoint do run.( sym ) end }
multitask( all: v ).invoke