Class: ParallelParser

Inherits:
Object
  • Object
show all
Defined in:
lib/biodiversity/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(processes_num = nil) ⇒ ParallelParser

Returns a new instance of ParallelParser.



28
29
30
31
32
33
34
35
36
# File 'lib/biodiversity/parser.rb', line 28

def initialize(processes_num = nil)
  require 'parallel'
  cpu_num
  if processes_num.to_i > 0
    @processes_num = [processes_num, cpu_num - 1].min
  else
    @processes_num = cpu_num > 3 ? cpu_num - 2 : 1
  end
end

Instance Method Details

#cpu_numObject



43
44
45
# File 'lib/biodiversity/parser.rb', line 43

def cpu_num
  @cpu_num ||= Parallel.processor_count
end

#parse(names_list) ⇒ Object



38
39
40
41
# File 'lib/biodiversity/parser.rb', line 38

def parse(names_list)
  parsed = Parallel.map(names_list.uniq, :in_processes => @processes_num) { |n| [n, parse_process(n)] }
  parsed.inject({}) { |res, x| res[x[0]] = x[1]; res }
end