求指点单例的写法
dieslrae
2011-09-21
由于之前是写java的,在看python书的时候发现没有讲单例,于是上网搜了下,发现写法很多,于是综合了下,写了个例子,测了下发现没什么问题,请各位大大看看这么写会不会有什么隐患?
import threading class A(object): __instance = None __lock = threading.Lock() def __init__(): pass @classmethod def getInstance(self): A.__lock.acquire() if not self.__instance: self.__instance = super(A,self).__new__(self) A.__lock.release() return self.__instance |
|
yanghao0
2012-09-27
不推荐python使用单例模式。 |
|
dieslrae
2012-09-27
yanghao0 写道 不推荐python使用单例模式。 为什么呢 |
|
yanghao0
2012-09-28
考虑使用单例,无非就是想某对象(或者数据)在项目级上全局化。
这招在java上很管用,但python...你可以写几个多线程,模拟大并发的情况进行测试。 |
|
dieslrae
2012-09-28
yanghao0 写道 考虑使用单例,无非就是想某对象(或者数据)在项目级上全局化。
这招在java上很管用,但python...你可以写几个多线程,模拟大并发的情况进行测试。 能不能详细解释一下呢 |
|
wan19900220
2013-04-16
从java的角度来分析,安全上面没什么问题,但是有效率上面的问题,每次执行函数的时候都得有获取锁和解锁的操作,这样就降低了效率,解决办法是在锁的外面再套一层if not self.__instance判断,你觉得呢?
|
|
icefire
2013-10-06
可以把模块当单例对象用。
python没有java那么多讲究。 |