import threading from tensorboardX import SummaryWriter class SingleSummaryWriter(SummaryWriter): _instance_lock = threading.Lock() def __init__(self, logdir=None, **kwargs): super().__init__(logdir, **kwargs) def __new__(cls, *args, **kwargs): if not hasattr(SingleSummaryWriter, "_instance"): with SingleSummaryWriter._instance_lock: if not hasattr(SingleSummaryWriter, "_instance"): SingleSummaryWriter._instance = object.__new__(cls) return SingleSummaryWriter._instance