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>

"""
相关推荐
测试19989 分钟前
2025软件测试面试题汇总(接口测试篇)
自动化测试·软件测试·python·测试工具·面试·职场和发展·接口测试
抽风的雨6101 小时前
【python深度学习】Day53 对抗生成网络
python·深度学习
程序小武1 小时前
Python 面向对象编程基础-类的创建与__init__实例化
python
Qyee162 小时前
【算法】基于中位数和MAD鲁棒平均值计算算法
python·算法
在未来等你2 小时前
设计模式精讲 Day 1:单例模式(Singleton Pattern)
java·设计模式·面向对象·软件架构
桥豆麻袋93932 小时前
Javascript 单例模式
开发语言·javascript·单例模式
不会编程的小江江2 小时前
【设计模式】单例模式
单例模式·设计模式
Ai财富密码2 小时前
【Python教程】CentOS系统下Miniconda3安装与Python项目后台运行全攻略
开发语言·python·numpy
大数据魔法师2 小时前
豆瓣图书数据采集与可视化分析(四)- 豆瓣图书数据可视化(Pyecharts)
python·数据分析·数据可视化
databook3 小时前
掌握ChangeSpeed类:让数学动画速度随心而动!
python·动效