module Nucleon::Parallel::InstanceMethods
Public Instance Methods
parallel(method, args, *shared_args)
click to toggle source
# File lib/core/facade.rb 26 def parallel(method, args, *shared_args) 27 results = nil 28 29 case args 30 when Hash 31 results = parallel_hash(method, args, *shared_args) 32 when Array, String, Symbol 33 results = parallel_array(method, args, *shared_args) 34 end 35 results 36 end
parallel_array(method, array_args, *shared_args)
click to toggle source
# File lib/core/facade.rb 40 def parallel_array(method, array_args, *shared_args) 41 results = [] 42 array_args = [ array_args ] unless array_args.is_a?(Array) 43 44 if Nucleon.parallel? 45 array_args.each do |arg| 46 results << future.send(method, arg, *shared_args) 47 end 48 results.map { |future| future.value } # Wait for all to finish. 49 else 50 array_args.each do |arg| 51 results << send(method, arg, *shared_args) 52 end 53 end 54 results 55 end
parallel_finalize()
click to toggle source
# File lib/core/facade.rb 20 def parallel_finalize 21 # Override if needed 22 end
parallel_hash(method, hash_args, *shared_args)
click to toggle source
# File lib/core/facade.rb 59 def parallel_hash(method, hash_args, *shared_args) 60 results = {} 61 62 if Nucleon.parallel? 63 hash_args.each do |key, value| 64 results[key] = future.send(method, key, value, *shared_args) 65 end 66 results.keys.each do |key| # Wait for all to finish. 67 results[key] = results[key].value 68 end 69 else 70 hash_args.each do |key, value| 71 results[key] = send(method, key, value, *shared_args) 72 end 73 end 74 results 75 end