概要
parallelライブラリで並列処理を実装
詳細
paralleライブラリを利用することで並列実行が可能です
インストール
gem install parallel
サンプル
# encoding: utf-8 require 'pp' require 'parallel' require "benchmark" def _benchmark(&block) return unless block_given? ret = Benchmark.measure(&block) puts "#{ret.to_s}" end sleep_proc = Proc.new { sleep 1 } sleeps = [sleep_proc, sleep_proc, sleep_proc, sleep_proc, sleep_proc] def single_execute(blocks) blocks.each do |block| block.call puts __callee__ end end def parallel_execute(blocks) Parallel.each(blocks, in_threads: 5) do |block| block.call puts __callee__ end end _benchmark() {single_execute(sleeps)} _benchmark() {parallel_execute(sleeps)}
出力
single_execute single_execute single_execute single_execute single_execute 0.000000 0.000000 0.000000 ( 5.000286) parallel_execute parallel_execute parallel_execute parallel_execute parallel_execute 0.000000 0.000000 0.000000 ( 1.001057)