python中单例模式的目的是令单个进程中只存在一个类的实例,实现数据共享
多进程的应用中,单例模式就实现不了了,需要用进程间通信方法来实现数据共享,如Queue,redis等
class SingleObj(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
print("first")
orig = super(SingleObj, cls)
cls._instance = orig.__new__(cls, *args, **kwargs)
return cls._instance
def __init__(self):
print("init")
a = SingleObj()
b = SingleObj()
执行结果:
可以看出只生成了一个实例对象,但是init方法被调用了两次, 单例模式的缺陷之一