Module: Parallax
- Defined in:
- lib/parallax.rb,
lib/parallax/worker.rb,
lib/parallax/version.rb,
lib/parallax/collector.rb
Defined Under Namespace
Constant Summary collapse
- VERSION =
"0.1.1"
Class Method Summary collapse
-
.execute(elements, options = {}, &block) ⇒ Collector
Divides the given elements in groups of N and executes each chunk in parallel with the given block.
Class Method Details
.execute(elements, options = {}, &block) ⇒ Collector
Divides the given elements in groups of N and executes each chunk in parallel with the given block.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/parallax.rb', line 19 def execute(elements, = {}, &block) processes = [:processes] || Etc.nprocessors collector = Parallax::Collector.new(processes) elements_chunks = elements.in_groups(processes, false) processes.times do |worker_index| Process.fork do begin worker = Parallax::Worker.new(collector, worker_index) yield worker, elements_chunks[worker_index] rescue StandardError => error worker.rescue error ensure worker.close end end end until collector.all_workers_terminated? collector.collect end collector.close collector end |