Python单例模式

单例模式介绍

一个类在整个系统运行期间,只允许存在一个实例,并提供全局访问点。应用的场景:

  • 配置只能加载一次
  • 日志对象不能创建多个
  • 数据库连接池只需要一个
  • Redis / MQ 客户端只要一个
  • 全局状态管理器(限流、缓存等)

单例模式的实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import threading


class Singleton:
_instances = None
_lock = threading.RLock()

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

def __new__(cls, *args, **kwargs):
if not cls._instances: # 性能更好,已经创建了对象后不需要再申请锁和释放锁
with cls._lock:
if not cls._instances:
cls._instances = super().__new__(cls)
return cls._instances
作者

Kim

发布于

2026-01-20

更新于

2026-01-20

许可协议

CC BY-NC-SA 4.0