1. ホーム
  2. ruby

[解決済み] ルビーが4つ組の配列要素で作業している様子

2023-04-20 14:54:39

質問

Rubyスクリプトの配列で、各要素の処理が必要なものがあります。

threads = []
elemets.each do  |element|
    threads.push(Thread.new{process(element)}}
end
threads.each { |aThread|  aThread.join }

しかし、リソースの制限により、一度に4つ以上の要素が処理されない場合、スクリプトは最適な方法で動作します。

各ループを捨てて、変数を使用して4つの要素をカウントし、待つことができることは知っています。 しかし、それを行うためのクールなrubyの方法はありますか?

どのように解決するのですか?

配列に対して、4つのグループに分けて列挙することができます。

>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].each_slice(4) {|a| p a}
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]

ということで、以下のようなものを試してみてください。

elements.each_slice(4) do | batch |
    batch.each do | element |
        threads.push(Thread.new{process(element)}}

    end
    (do stuff to check to see if the threads are done, otherwise wait )
end

私は午前3時から起きていて、2時間ほどしか寝ていません。