Commit caab52ae by Michael DeHaan

While the previous work on the foon class can't be quite recycled, it's still a nice abstraction.

parent 73ca1a17
......@@ -63,7 +63,6 @@ PROCESS_LOCKFILE = tempfile.TemporaryFile()
from foon import Foon
FOON = Foon()
################################################
......@@ -1058,11 +1057,10 @@ class Runner(object):
# *****************************************************
def _parallel_exec(self, hosts):
def _parallel_exec(self, params):
''' handles mulitprocessing when more than 1 fork is required '''
FOON.set_size(self.forks)
return FOON.map(_executor_hook, hosts)
return self.foon.map(_executor_hook, params)
# *****************************************************
......@@ -1114,6 +1112,8 @@ class Runner(object):
if self.forks == 0 or self.forks > len(hosts):
self.forks = len(hosts)
self.foon = Foon(self.forks)
if p and getattr(p, 'BYPASS_HOST_LOOP', None):
# Expose the current hostgroup to the bypassing plugins
......
......@@ -99,30 +99,18 @@ class MyPool(mpool.Pool):
class Foon(object):
def __init__(self):
self.set_size(0)
def __init__(self, size):
self.pool = self._make_pool(size)
def make_pool(self, processes=None, initializer=None, initargs=()):
def _make_pool(self, processes=None, initializer=None, initargs=()):
'''
Returns a process pool object
'''
return MyPool(processes, initializer, initargs)
def set_size(self, size):
global OLD_SIZE
global POOL
if size > OLD_SIZE or POOL is None:
OLD_SIZE = size
POOL = self.make_pool()
def map(self, function, data_list):
global POOL
try:
return POOL.map(function, data_list)
return self.pool.map(function, data_list)
except KeyboardInterrupt:
print "KEYBOARD INTERRUPT!"
sys.exit(1)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment