from Queue import Queue,Empty,Full
from threading import Lock
class SafeThreadPool(object):
def __init__(self, createFun, initSize=1, maxSize=1):
self.__queue = Queue()
self.__locker = Lock()
for i in xrange(initSize):
self.__queue.put_nowait(createFun())
self.__count = initSize
self.__maxSize = maxSize
self.__createFun = createFun
def getObject(self):
try:
return self.__queue.get_nowait()
except Empty:
self.__tryNewOb()
try:
return self.__queue.get_nowait()
except Empty:
return None
def release(self, obj):
try:
if obj is None:
return
self.__queue.put_nowait(obj)
except Full:
return
def __tryNewOb(self):
self.__locker.acquire()
if self.__count < self.__maxSize:
try:
self.__queue.put_nowait(self.__createFun())
self.__count =+ 1
except Full:
pass
self.__locker.release()
本文介绍了一个使用Python实现的安全线程池类,包括初始化、获取对象、释放对象和尝试创建新对象等核心功能。

3338

被折叠的 条评论
为什么被折叠?



