python 线程安全的对象池
来源:互联网 发布:关于阴间的电影网络 编辑:程序博客网 时间:2024/05/09 12:19
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 线程安全的对象池
- 线程安全的对象池
- 线程安全的对象操作
- 一些线程安全的对象
- 非线程安全对象池
- Java并发编程规则:有状态的线程安全对象在线程池中使用不一定就是线程安全的
- C#线程安全对象的内部实现
- 对象耦合的非线程安全
- C++线程安全的对象生命周期管理
- java中线程安全的集合对象
- 线程安全的对象生命期管理
- 线程安全的对象生命周期管理
- python 线程安全的单例 singleton
- 浅析Python的GIL和线程安全
- 浅析Python的GIL和线程安全
- FILE对象线程安全
- Python print线程安全
- Java多线程:线程安全和非线程安全的集合对象
- c语言中的“宏”是指什么?
- memset报传入的实参太多的错误
- Log4j配置及加载
- myeclipse svn 版本回滚
- gem update --system remotefetcher: fetcherror
- python 线程安全的对象池
- JavaScript 与java中数组的区别
- Hadoop—Pig部署及统计访问日志例子----练习8
- 字符串过滤
- 软件测试成长之路001
- Majority Element II
- Android Studio使用技巧
- (一)PHP面向对象理论1---类
- USACO Arithmetic Progressions(暴力)