12345678910111213141516171819202122232425262728 |
- from multiprocessing import RLock
- import queue
- class ConnectorPool():
- def __init__(self,init_num,max_num,method_init,**kwargs):
- self.connector_pool = queue.Queue()
- for i in range(init_num):
- self.connector_pool.put(method_init(**kwargs))
- self.method_init = method_init
- self.kwargs = kwargs
- self._lock = RLock()
- self.pool_size = init_num
- self.max_num = max_num
- def getConnector(self):
- with self._lock:
- if self.connector_pool.empty():
- if self.pool_size<self.max_num:
- self.connector_pool.put(self.method_init(**self.kwargs))
- _conn = self.connector_pool.get(block=True)
- return _conn
- def putConnector(self,_conn):
- with self._lock:
- self.connector_pool.put(_conn)
|