Sha256: 31f9c0a65d05c2b65027416c79d861903153a1fa0a5cb8b899c3269e24135abe
Contents?: true
Size: 1.15 KB
Versions: 1
Compression:
Stored size: 1.15 KB
Contents
module Cotcube module Helpers def parallelize(ary, opts = {}, &block) processes = opts[:processes].nil? ? 1 : opts[:processes] threads_per_process = opts[:threads ].nil? ? 1 : opts[:threads] progress = opts[:progress ].nil? ? "" : opts[:progress] chunks = [] if processes == 0 or processes == 1 r = Parallel.map(ary, in_threads: threads_per_process) {|u| v = yield(u); v} elsif [0,1].include?(threads_per_process) r = Parallel.map(ary, in_processes: processes) {|u| v = yield(u)} else ary.each_slice(threads_per_process) {|chunk| chunks << chunk } if progress == "" r = Parallel.map(chunks, :in_processes => processes) do |chunk| Parallel.map(chunk, in_threads: threads_per_process) do |unit| yield(unit) end end else r = Parallel.map(ary, :progress => progress, :in_processes => processes) do |chunk| Parallel.map(chunk, in_threads: threads_per_process) do |unit| yield(unit) end end end end return r end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cotcube-helpers-0.1.1 | lib/cotcube-helpers/parallelize.rb |