class based singleton for SharedPool

This commit is contained in:
Vishvananda Ishaya
2010-07-26 12:49:21 -07:00
parent a8fd36c867
commit b72e1ef1e8
2 changed files with 8 additions and 7 deletions

View File

@@ -205,12 +205,13 @@ class ProcessPool(object):
self._pool.release()
return rv
_instance = None
def SharedPool():
global _instance
if _instance is None:
_instance = ProcessPool()
return _instance
class SharedPool(object):
_instance = None
def __init__(self):
if SharedPool._instance is None:
self.__class__._instance = ProcessPool()
def __getattr__(self, key):
return getattr(self._instance, key)
def simple_execute(cmd, **kwargs):
return SharedPool().simple_execute(cmd, **kwargs)

View File

@@ -118,7 +118,7 @@ class ProcessTestCase(test.TrialTestCase):
def test_shared_pool_is_singleton(self):
pool1 = process.SharedPool()
pool2 = process.SharedPool()
self.assert_(id(pool1) == id(pool2))
self.assertEqual(id(pool1._instance), id(pool2._instance))
def test_shared_pool_works_as_singleton(self):
d1 = process.simple_execute('sleep 1')