From a0722abe80c416e0c174f3ff861566834402d43b Mon Sep 17 00:00:00 2001 From: Scott Gasch Date: Thu, 2 Jun 2022 08:23:18 -0700 Subject: Initial stab at a smarter doc/unit/integration/coverage test runner. --- thread_utils.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'thread_utils.py') diff --git a/thread_utils.py b/thread_utils.py index 65f6037..df637e0 100644 --- a/thread_utils.py +++ b/thread_utils.py @@ -120,6 +120,27 @@ def background_thread( return wrapper(_funct) +class ThreadWithReturnValue(threading.Thread): + """A thread whose return value is plumbed back out as the return + value of :meth:`join`. + """ + + def __init__(self, group=None, target=None, name=None, args=(), kwargs={}, Verbose=None): + threading.Thread.__init__( + self, group=None, target=target, name=None, args=args, kwargs=kwargs + ) + self._target = target + self._return = None + + def run(self): + if self._target is not None: + self._return = self._target(*self._args, **self._kwargs) + + def join(self, *args): + threading.Thread.join(self, *args) + return self._return + + def periodically_invoke( period_sec: float, stop_after: Optional[int], -- cgit v1.3