import threading from typing import ClassVar, Dict class Singleton(type): _ins: ClassVar[Dict] = {} _lock = threading.Lock() def __call__(cls, *args, **kwargs): if cls not in cls._ins: with cls._lock: if cls not in cls._ins: ins = super().__call__(*args, **kwargs) cls._ins[cls] = ins return cls._ins[cls]
Memory