Python测试单例模式
单例模式的核心思想
单例模式确保一个类只有一个实例,并提供一个全局访问点。这在需要控制资源访问(如配置文件、数据库连接等)时非常有用。
一个简单的示例:
import threading
import timeclass Singleton:instance = Nonelock = threading.RLock() # 加锁(递归锁)防止并发创建新对象def __init__(self, name):self.name = namedef __new__(cls, *args, **kwargs):if cls.instance:return cls.instance# 加锁with cls.lock:time.sleep(0.5)if cls.instance:return cls.instancecls.instance = object.__new__(cls) # 创建空对象return cls.instance# obj1 = Singleton('obj1')
# print(obj1)
# obj2 = Singleton('obj2')
# print(obj2)def task():obj = Singleton('x')print(obj)for i in range(10):t = threading.Thread(target=task)t.start()"""
输出:
<__main__.Singleton object at 0x0000024AFD72C090>
<__main__.Singleton object at 0x0000024AFD72C090>
<__main__.Singleton object at 0x0000024AFD72C090>
<__main__.Singleton object at 0x0000024AFD72C090>
<__main__.Singleton object at 0x0000024AFD72C090>
<__main__.Singleton object at 0x0000024AFD72C090>
<__main__.Singleton object at 0x0000024AFD72C090>
<__main__.Singleton object at 0x0000024AFD72C090>
<__main__.Singleton object at 0x0000024AFD72C090>
<__main__.Singleton object at 0x0000024AFD72C090>"""