Module: Celluloid::Pmap
- Included in:
- Enumerable
- Defined in:
- lib/celluloid/pmap.rb,
lib/celluloid/pmap/version.rb,
lib/celluloid/pmap/parallel_map_worker.rb
Defined Under Namespace
Classes: ParallelMapWorker
Constant Summary
collapse
- VERSION =
"0.2.2"
Class Method Summary
collapse
Class Method Details
.find_loaded_gem(name) ⇒ Object
7
8
9
|
# 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) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/celluloid/pmap.rb', line 22
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 ⇒ Object
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/celluloid/pmap.rb', line 11
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'
Celluloid::PoolManager
else
require 'celluloid/current'
Celluloid::Supervision::Container::Pool
end
end
|