module Enumerable

Public Instance Methods

each_in_threads(num_threads, flatten = false) { |item| ... } click to toggle source
# File lib/toptranslation_cli/threaded.rb, line 12
def each_in_threads(num_threads, flatten = false)
  in_chunks(num_threads, flatten).map do |chunk|
    Thread.new do
      chunk.each do |item|
        yield item
      end
    end
  end.each(&:join)
end
in_chunks(chunks, flatten = false) click to toggle source
# File lib/toptranslation_cli/threaded.rb, line 4
def in_chunks(chunks, flatten = false)
  chunk_size = [size, (size / chunks.to_f).ceil].select(&:positive?).min
  chunked = each_slice(chunk_size)

  chunked = chunked.map(&:flatten) if flatten
  chunked
end