diff --git a/lib/ansible/runner/__init__.py b/lib/ansible/runner/__init__.py index 9160a0b592..0fe8e599d9 100644 --- a/lib/ansible/runner/__init__.py +++ b/lib/ansible/runner/__init__.py @@ -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 diff --git a/lib/ansible/runner/foon.py b/lib/ansible/runner/foon.py index f084ba726e..f5f3be1220 100644 --- a/lib/ansible/runner/foon.py +++ b/lib/ansible/runner/foon.py @@ -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)