from mlpipeline.pipeline.prediction_pipeline import PredictionPipeline from threading import Lock class ModelLoader: _instance = None _lock = Lock() def __new__(cls): if cls._instance is None: with cls._lock: if cls._instance is None: cls._instance = super().__new__(cls) cls._instance.pipeline = None return cls._instance def get_pipeline(self) -> PredictionPipeline: if self.pipeline is None: self.pipeline = PredictionPipeline() self.pipeline.load_model() return self.pipeline def reload_model(self): self.pipeline = PredictionPipeline() self.pipeline.load_model() return self.pipeline def is_loaded(self) -> bool: return self.pipeline is not None and self.pipeline.model is not None model_loader = ModelLoader()