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>

"""
相关推荐
番茄灭世神4 分钟前
Python从入门到精通 第一章
python
B站_计算机毕业设计之家8 分钟前
豆瓣电影推荐系统 | Python Django Echarts构建个性化影视推荐平台 大数据 毕业设计源码 (建议收藏)✅
大数据·python·机器学习·django·毕业设计·echarts·推荐算法
小镇敲码人14 分钟前
探索华为CANN框架中的ACL仓库
c++·python·华为·acl·cann
KIKIiiiiiiii14 分钟前
微信个人号API二次开发中的解决经验
java·人工智能·python·微信
云姜.15 分钟前
单例模式及线程安全问题
单例模式
ZH154558913116 分钟前
Flutter for OpenHarmony Python学习助手实战:Web开发框架应用的实现
python·学习·flutter
Ekehlaft18 分钟前
这款国产 AI,让 Python 小白也能玩转编程
开发语言·人工智能·python·ai·aipy
开源技术23 分钟前
Python GeoPandas基础知识:地图、投影和空间连接
开发语言·ide·python
hedley(●'◡'●)26 分钟前
基于cesium和vue的大疆司空模仿程序
前端·javascript·vue.js·python·typescript·无人机
Cult Of26 分钟前
Alicea Wind的个人网站开发日志(2)
开发语言·python·vue