Python——23种设计模式
单例模式:
为了确保在单例模式下,创建的每一个线程都是在同一块内存空间中,这样做的目的就是为了节省重复性的线程所导致的占用内存空间。
不加单例模式的实例化效果:
class SingLeton(object):
pass
obj1 = SingLeton()
print(obj1) #<__main__.SingLeton object at 0x00000167A41C7700>
obj2 = SingLeton()
print(obj2) #<__main__.SingLeton object at 0x00000167A41C7C10>
使用单例模式后:
class SingLeton(object):
instance = None
def __new__(cls, *args, **kwargs):
if not cls.instance:
cls.instance = object.__new__(cls)
return cls.instance
obj1 = SingLeton()
print(obj1) #<__main__.SingLeton object at 0x00000167B0277C10>
obj2 = SingLeton()
print(obj2) #<__main__.SingLeton object at 0x00000167B0277C10>
线程+锁的单例模式
from threading import Thread,Lock
class SingLeton(object):
instance = None
lock = Lock()
def __new__(cls, *args, **kwargs):
with cls.lock:
if not cls.instance:
cls.instance = object.__new__(cls)
return cls.instance
for i in range(10):
print(SingLeton())

浙公网安备 33010602011771号