module Celluloid::Pmap
Constants
- VERSION
Public Class Methods
ensure_celluloid_running()
click to toggle source
# File lib/celluloid/pmap.rb, line 11 def self.ensure_celluloid_running celluloid_running = Celluloid.running? rescue false Celluloid.boot unless celluloid_running end
find_loaded_gem(name)
click to toggle source
# File lib/celluloid/pmap.rb, line 7 def self.find_loaded_gem(name) Gem.loaded_specs.values.detect{|repo| repo.name == name } end
included(base)
click to toggle source
# File lib/celluloid/pmap.rb, line 35 def self.included(base) base.class_eval do def pmap(pool_or_size=Celluloid.cores, &block) pool = if pool_or_size.class.ancestors.include?(Celluloid::Pmap.pool_class) pool_or_size else Pmap::ParallelMapWorker.pool(size: pool_or_size) end futures = map { |elem| pool.future(:yielder, elem, block) } futures.map { |future| future.value } end end end
pool_class()
click to toggle source
# File lib/celluloid/pmap.rb, line 16 def self.pool_class celluloid_version = find_loaded_gem("celluloid").version.to_s.split('.') if celluloid_version[0].to_i == 0 && celluloid_version[1].to_i <= 16 require 'celluloid' require 'celluloid/autostart' ensure_celluloid_running Celluloid::PoolManager elsif celluloid_version[0].to_i == 0 && celluloid_version[1].to_i < 18 require 'celluloid/current' ensure_celluloid_running Celluloid::Supervision::Container::Pool else require 'celluloid' require 'celluloid/pool' ensure_celluloid_running Celluloid::Supervision::Container::Pool end end
Public Instance Methods
pmap(pool_or_size=Celluloid.cores, &block)
click to toggle source
# File lib/celluloid/pmap.rb, line 38 def pmap(pool_or_size=Celluloid.cores, &block) pool = if pool_or_size.class.ancestors.include?(Celluloid::Pmap.pool_class) pool_or_size else Pmap::ParallelMapWorker.pool(size: pool_or_size) end futures = map { |elem| pool.future(:yielder, elem, block) } futures.map { |future| future.value } end