求指点单例的写法

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那么多讲究。
Global site tag (gtag.js) - Google Analytics