使用装(修饰器)来实现单例模式
Posted apollo1616
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用装(修饰器)来实现单例模式相关的知识,希望对你有一定的参考价值。
import threading
# 装饰器
def synchronized(func):
func.__lock__ = threading.Lock()
def synced_func(*args, **kws):
with func.__lock__:
return func(*args, **kws)
return synced_func
# 使用修饰器来实现单例模式
def singleton(cls):
instances = {}
@synchronized
def get_instance(*args, **kw):
if cls not in instances:
instances[cls] = cls(*args, **kw)
return instances[cls]
return get_instance
def worker():
single_test = Test()
print("id----> %s" % id(single_test))
@singleton
class Test(object):
a = 1
if __name__ == "__main__":
task_list = []
for one in range(5):
t = threading.Thread(target=worker)
task_list.append(t)
for one in task_list:
one.start()
for one in task_list:
one.join()
以上是关于使用装(修饰器)来实现单例模式的主要内容,如果未能解决你的问题,请参考以下文章