Module: Enumerable

Defined in:
lib/toptranslation_cli/threaded.rb

Instance Method Summary collapse

Instance Method Details

#each_in_threads(num_threads, flatten = false) ⇒ Object



12
13
14
15
16
17
18
19
20
# 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) ⇒ Object



4
5
6
7
8
9
10
# 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