/
githubmirror
/
ColossalAI
Обзор
Документация
Войти
/
githubmirror
/
ColossalAI
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
colossalai/context/singleton_meta.py
27 строк
921 B
Season
[Fix]: implement thread-safety singleton to avoid deadlock for very large-scale training scenarios (#5625)
25 апр 2024, 09:45
Не верифицирован
25 апр 2024, 09:45
7ef9160
Код
Авторство
О чём код?
import threading class SingletonMeta(type): """ Thread-safe Singleton Meta with double-checked locking. Reference: https://en.wikipedia.org/wiki/Double-checked_locking """ _instances = {} _lock = threading.Lock() def __call__(cls, *args, **kwargs): # First check (without locking) for performance reasons if cls not in cls._instances: # Acquire a lock before proceeding to the second check with cls._lock: # Second check with lock held to ensure thread safety if cls not in cls._instances: instance = super().__call__(*args, **kwargs) cls._instances[cls] = instance else: assert ( len(args) == 0 and len(kwargs) == 0 ), f"{cls.__name__} is a singleton class and an instance has been created." return cls._instances[cls]