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>

"""
相关推荐
人工智能训练18 分钟前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
yaoming16824 分钟前
python性能优化方案研究
python·性能优化
码云数智-大飞1 小时前
使用 Python 高效提取 PDF 中的表格数据并导出为 TXT 或 Excel
python
biuyyyxxx3 小时前
Python自动化办公学习笔记(一) 工具安装&教程
笔记·python·学习·自动化
极客数模3 小时前
【2026美赛赛题初步翻译F题】2026_ICM_Problem_F
大数据·c语言·python·数学建模·matlab
小鸡吃米…4 小时前
机器学习中的代价函数
人工智能·python·机器学习
Li emily5 小时前
如何通过外汇API平台快速实现实时数据接入?
开发语言·python·api·fastapi·美股
m0_561359675 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
Ulyanov6 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
2401_838472516 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python