1.单例和工厂函数
区别
| 维度 | 单例 | 工厂(无缓存) |
|---|---|---|
| 内存 | 一份实例 + 一份连接池 | 每实例独立内存 + 独立连接池 |
| 连接池 | 共享,TCP 复用 | 各建各的,易打满文件描述符 |
| CPU | 初始化一次 | 每次都要构造 + 可能的 TLS 握手 |
| GC 压力 | 无 | 实例用完才回收,高峰时频繁 GC |
单例的代码
from functools import lru_cache # 最多缓存 128 组不同参数的结果,可以存128次不同的调用 @lru_cache(maxsize=128) # 最多缓存 128 组不同参数的结果 def expensive(x, y): print(f"real compute {x},{y}") return x + y工厂函数的代码
和普通函数一样写法