增加一些配置性工作
This commit is contained in:
22
utils/sing.py
Normal file
22
utils/sing.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from typing import Callable, Generic, TypeVar
|
||||
|
||||
T = TypeVar("T")
|
||||
|
||||
|
||||
class SingletonProvider(Generic[T]):
|
||||
def __init__(self, factory: Callable[[], T]):
|
||||
self._factory = factory
|
||||
self._instance: T | None = None
|
||||
|
||||
def __call__(self) -> T:
|
||||
if self._instance is None:
|
||||
self._instance = self._factory()
|
||||
return self._instance
|
||||
|
||||
def reset(self) -> None:
|
||||
"""重置单例(测试 / 热重载用)"""
|
||||
self._instance = None
|
||||
|
||||
def warmup(self) -> T:
|
||||
"""提前初始化"""
|
||||
return self()
|
||||
Reference in New Issue
Block a user