当前位置: 首页 > news >正文

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>"""

http://www.xdnf.cn/news/523063.html

相关文章:

  • 互联网大厂Java求职面试:Spring AI与大模型交互的高级模式与自定义开发
  • TDengine 2025年产品路线图
  • ip与mac-数据包传输过程学习
  • 网络-MOXA设备基本操作
  • 【Nginx学习笔记】:Fastapi服务部署单机Nginx配置说明
  • 如何快速隔离被攻击的服务器以防止横向渗透
  • 服务器的基础知识
  • 【SpringBoot】从零开始全面解析SpringMVC (三)
  • UE5 GAS框架解析内部数据处理机制——服务器与客户端
  • Feature Toggle 不再乱:如何设计一个干净、安全、可控的特性开关系统?
  • DS1302实时时钟模块
  • windows网站篡改脚本编制
  • 低功耗:XILINX FPGA如何优化功耗?
  • 入职软件开发与实施工程师了后........
  • MySQL故障排查与生产环境优化
  • 仿腾讯会议——音频服务器部分
  • 图像分割(2)u-net代码实战——基于视网膜分割
  • 【Hadoop】--HA高可用搭建--3.2.2
  • 【520快乐】写一个网页送上520祝福
  • 智慧电力赋能金融机构,用数据守住“电力生命线
  • uniapp小程序获取手机设备安全距离
  • 中小实验室质检LIMS 系统选型 从成本管控到竞争力升级的黄金法则
  • 【MySQL】基础操作
  • 用户行为日志分析的常用架构
  • TCP和套接字SSL加密连接行为分析
  • 二分交互题总结
  • 深入探讨死区生成:原理、实现与应用
  • 词嵌入基础
  • 【Rust迭代器】Rust迭代器用法解析与应用实战
  • Python Django 的 ORM 编程思想及使用步骤