From 679b41526d9327f5bcecc702a928a72b68a1e0c8 Mon Sep 17 00:00:00 2001 From: Scott Date: Mon, 31 Jan 2022 10:03:43 -0800 Subject: [PATCH 1/1] Adds a quiet option to executor shutdown. --- executors.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/executors.py b/executors.py index 633b11b..e95ed71 100644 --- a/executors.py +++ b/executors.py @@ -84,10 +84,10 @@ class BaseExecutor(ABC): pass @abstractmethod - def shutdown(self, wait: bool = True) -> None: + def shutdown(self, *, wait: bool = True, quiet: bool = False) -> None: pass - def shutdown_if_idle(self) -> bool: + def shutdown_if_idle(self, *, quiet: bool = False) -> bool: """Shutdown the executor and return True if the executor is idle (i.e. there are no pending or active tasks). Return False otherwise. Note: this should only be called by the launcher @@ -95,7 +95,7 @@ class BaseExecutor(ABC): """ if self.task_count == 0: - self.shutdown() + self.shutdown(wait=True, quiet=quiet) return True return False @@ -155,11 +155,12 @@ class ThreadExecutor(BaseExecutor): return result @overrides - def shutdown(self, wait=True) -> None: + def shutdown(self, *, wait: bool = True, quiet: bool = False) -> None: if not self.already_shutdown: logger.debug(f'Shutting down threadpool executor {self.title}') - print(self.histogram.__repr__(label_formatter='%ds')) self._thread_pool_executor.shutdown(wait) + if not quiet: + print(self.histogram.__repr__(label_formatter='%ds')) self.already_shutdown = True @@ -197,11 +198,12 @@ class ProcessExecutor(BaseExecutor): return result @overrides - def shutdown(self, wait=True) -> None: + def shutdown(self, *, wait: bool = True, quiet: bool = False) -> None: if not self.already_shutdown: logger.debug(f'Shutting down processpool executor {self.title}') self._process_executor.shutdown(wait) - print(self.histogram.__repr__(label_formatter='%ds')) + if not quiet: + print(self.histogram.__repr__(label_formatter='%ds')) self.already_shutdown = True def __getstate__(self): @@ -1107,13 +1109,14 @@ class RemoteExecutor(BaseExecutor): return self._helper_executor.submit(self.launch, bundle) @overrides - def shutdown(self, wait=True) -> None: + def shutdown(self, *, wait: bool = True, quiet: bool = False) -> None: if not self.already_shutdown: logging.debug(f'Shutting down RemoteExecutor {self.title}') self.heartbeat_stop_event.set() self.heartbeat_thread.join() self._helper_executor.shutdown(wait) - print(self.histogram.__repr__(label_formatter='%ds')) + if not quiet: + print(self.histogram.__repr__(label_formatter='%ds')) self.already_shutdown = True @@ -1212,11 +1215,11 @@ class DefaultExecutors(object): def shutdown(self) -> None: if self.thread_executor is not None: - self.thread_executor.shutdown() + self.thread_executor.shutdown(wait=True, quiet=True) self.thread_executor = None if self.process_executor is not None: - self.process_executor.shutdown() + self.process_executor.shutdown(wait=True, quiet=True) self.process_executor = None if self.remote_executor is not None: - self.remote_executor.shutdown() + self.remote_executor.shutdown(wait=True, quiet=True) self.remote_executor = None -- 2.45.2