質問: Rubyで記述されたプログラムを複数プロセスによる並列処理を行いたいです. `MPI`であれば,`mpirun`というコマンドがあります. Rubyにも同様なコマンドがありますでしょうか?
回答: 私が知る限り、一番「プロセス並列処理」に近い gem は Parallel です。 ``` require 'parallel' Parallel.map([1,2,3]) do |i| heavy_task_on(i) end ``` この形式で記述されたとき、この gem は何をやってくれるかというと、最大 CPU コア数分まで自身の複製 (fork) を作成し、引数の enumerable の各要素をそれぞれの複製に Serialize を経由して引き渡します。それぞれの複製は、個別のプロセスとして計算を進め、最終的にブロックの返り値を Serialize を経由し、親に返却します。親は、すべての要素に対してこれをおこない、最終的に得られた値たちを Array として返してくれる、便利な gem です。