diff --git a/leads/comm/prototype.py b/leads/comm/prototype.py index 91f7f58..06d4cb4 100644 --- a/leads/comm/prototype.py +++ b/leads/comm/prototype.py @@ -58,14 +58,11 @@ def _register_process(self, *args, **kwargs) -> None: :param kwargs: kwargs passed to `run()` :exception RuntimeError: duplicated registration """ - self._lock.acquire() if self._main_thread: raise RuntimeError("A service can only run once") - try: + with self._lock: self._main_thread = _Thread(name=f"service{hash(self)}", target=self._run, daemon=True, args=args, kwargs=kwargs) - finally: - self._lock.release() def _parallel_run(self, *args, **kwargs) -> None: """ diff --git a/leads/dt/odometer.py b/leads/dt/odometer.py index 839e4f4..36d0db2 100644 --- a/leads/dt/odometer.py +++ b/leads/dt/odometer.py @@ -25,8 +25,5 @@ def __init__(self) -> None: @_override def write(self, payload: float) -> None: - self._lock.acquire() - try: + with self._lock: super().write(payload) - finally: - self._lock.release() diff --git a/leads/logger.py b/leads/logger.py index fd2e6ef..367baf5 100644 --- a/leads/logger.py +++ b/leads/logger.py @@ -58,12 +58,9 @@ def format(self, msg: str, font: int, color: int | None, background: int | None) return f"\033[{font}{f";{color}" if color else ""}{f";{background + 10}" if background else ""}m{msg}\033[0m" def print(self, msg: str, level: int) -> None: - self._lock.acquire() - try: + with self._lock: if self._debug_level <= level: print(msg) - finally: - self._lock.release() def info(self, *msg: str, sep: str = " ", end: str = "\n", f: tuple[int, int | None, int | None] = (REGULAR, None, None)) -> None: diff --git a/leads/os.py b/leads/os.py index f7b654d..bb82ced 100644 --- a/leads/os.py +++ b/leads/os.py @@ -21,11 +21,8 @@ def active(self) -> bool: @active.setter def active(self, active: bool) -> None: - self._lock.acquire() - try: + with self._lock: self._active = active - finally: - self._lock.release() _thread_flags: _ThreadFlags = _ThreadFlags() diff --git a/leads_comm_serial/identity.py b/leads_comm_serial/identity.py index 1cef720..8545399 100644 --- a/leads_comm_serial/identity.py +++ b/leads_comm_serial/identity.py @@ -58,11 +58,8 @@ def _establish_connection_no_lock(self, serial: _Serial) -> SerialConnection: return self._establish_connection_no_lock(serial) def establish_connection(self, serial: _Serial) -> SerialConnection: - _lock.acquire() - try: + with _lock: return self._establish_connection_no_lock(serial) - finally: - _lock.release() _instances: dict[AutoIdentity, str | None] = {}