Rubyで並列処理する
parallel を使った例
そもそも似せて作られているわけではないので完全に一緒とは行かないが、ニュアンス的には近いものを感じた。
単純に並列実行する
code:rb
}
並列実行した結果を受け取る
code:rb
}
p result
実行に上限をつける
each や map の引数の in_threads もしくは in_processes に同時実行上限となる数値を設定する。
デフォルトは0で、その場合CPUのコア数が指定される。
code:rb
sleep rand(1..5)
}
concurrent-ruby の話
非同期実行に係るAPIやオブジェクトの実装を収録する
主な処理は Concurrent::Promises に集約されている
スレッドセーフな Array、Hash、Map、Set、Tuple の実装を含む
記載時点(2021-06-05)で同時実行数の上限を設定する Throttle は試験実装扱いであった。
(使うタイミングが来たらなんか書きます)