parallel の並列数の決め方を調べたのでメモしておきます。下記の1から順に評価されて並列数が決定されます。
1.システムのプロセッサコア数
Etc.nprocessors
の返すプロセッサコア数です。1CPU のシステムでは parallel を使っても後述の指定のいずれも行わなかった場合は並列数1になってしまいます。逆にサーバ機で多コアの Xoen などを使っている場合には並列数が多くなりすぎて CPU やメモリを圧迫してしまうこともあり得ます。
2. 環境変数 PARALLEL_PROCESSOR_COUNT
環境変数 PARALLEL_PROCESSOR_COUNT
が設定されていると、その値が採用されます。parallel を呼び出す都度に指定する必要がないので、常に同じ並列数でよい場合には便利でしょうか。
3. in_processes/in_threads で指定する並列数
map メソッドの in_processes/in_threads オプションで都度並列数を指定できます。ここで指定するケースが一番多いですかね。
4. map/each メソッドの source 数
Parallel.map([1, 2, 3], in_process: 10)...
としても並列数は3にしかならないわけですね。