Python测试单例模式

单例模式的核心思想

单例模式确保一个类只有一个实例,并提供一个全局访问点。这在需要控制资源访问(如配置文件、数据库连接等)时非常有用。

一个简单的示例:

python 复制代码
import threading
import time


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:
            time.sleep(0.5)
            if cls.instance:
                return cls.instance
            cls.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>

"""
相关推荐
Warson_L15 小时前
Python `Annotated` 与 LangGraph Reducer 学习笔记
python
韩师傅15 小时前
海天线算法的前世今生
python·计算机视觉
韩师傅15 小时前
当你的甲方设备过烂,要如何快速出效果?
python·计算机视觉
Warson_L15 小时前
LangGraph的MessageState and HumanMessage
python
韩师傅16 小时前
当你的甲方吐槽天空不够蓝,你应该如何应对
python·计算机视觉
Warson_L16 小时前
python的类&继承
python
Warson_L16 小时前
类型标注/type annotation
python
ThreeS19 小时前
手搓MiniVLA全实战教程-一步一步用pytorch解释原理与思路
人工智能·python
金銀銅鐵20 小时前
[Python] 模 n 乘法的逆元计算器
python·数学·游戏