python Python中单例模式的线程安全实现。基于tornado.ioloop.IOLoop.instance()方法。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python Python中单例模式的线程安全实现。基于tornado.ioloop.IOLoop.instance()方法。相关的知识,希望对你有一定的参考价值。

import threading


# Based on tornado.ioloop.IOLoop.instance() approach.
# See https://github.com/facebook/tornado
class SingletonMixin(object):
	__singleton_lock = threading.Lock()
	__singleton_instance = None

	@classmethod
	def instance(cls):
		if not cls.__singleton_instance:
			with cls.__singleton_lock:
				if not cls.__singleton_instance:
					cls.__singleton_instance = cls()
		return cls.__singleton_instance


if __name__ == '__main__':
	class A(SingletonMixin):
		pass

	class B(SingletonMixin):
		pass

	a, a2 = A.instance(), A.instance()
	b, b2 = B.instance(), B.instance()

	assert a is a2
	assert b is b2
	assert a is not b

	print('a:  %s\na2: %s' % (a, a2))
	print('b:  %s\nb2: %s' % (b, b2))

以上是关于python Python中单例模式的线程安全实现。基于tornado.ioloop.IOLoop.instance()方法。的主要内容,如果未能解决你的问题,请参考以下文章

python中单例模式的实现-通过闭包函数和魔术方法__new__实现单例模式

Python设计模式中单例模式的实现及在Tornado中的应用

python实现线程安全的单例模式

java中3中单例模式例子

python中单例模式

Python中单例设计模式