def METHOD_NAME(self):
    try:
        try:
            self.initialize_variables()
        except Exception as except_msg:
            self.logger.exception(f"initialize_variables() Exception: {except_msg}")
        dur = (timeit.default_timer() - self.thread_startup_timer) * 1000
        self.logger.info(f"Activated in {dur:.1f} ms")
        while self.running:
            try:
                self.loop()
            except Pyro5.errors.TimeoutError:
                self.logger.exception("Pyro5 TimeoutError")
            except Exception:
                self.logger.exception("loop() Error")
            finally:
                time.sleep(self.sample_rate)
    except Exception:
        self.logger.exception("Run Error")
        self.thread_shutdown_timer = timeit.default_timer()
    finally:
        self.run_finally()
        self.running = False
        if self.thread_shutdown_timer:
            dur = (timeit.default_timer() - self.thread_shutdown_timer) * 1000
            self.logger.info(f"Deactivated in {dur:.1f} ms")
        else:
            self.logger.error("Deactivated unexpectedly")