单例模式
单例模式:每次实例化对象都是用的同一个内存地址【第一个对象】。
-
基于模块导入实现
-
基于面向对象实现
手撕一个单例模式示例:
import threading class Singleton: instance = None lock = threading.RLock() def __init__(self, name): self.name = name def __new__(cls, *args, **kwargs): if cls.instance: return cls.instance with cls.lock: if cls.instance: return cls.instance import time cls.instance = object.__new__(cls) return cls.instance def task(): obj = Singleton("x") print(obj) for i in range(10): t = threading.Thread(target=task) t.start()