diff options
Diffstat (limited to 'thread_utils.py')
| -rw-r--r-- | thread_utils.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/thread_utils.py b/thread_utils.py index d8c85f4..51078a4 100644 --- a/thread_utils.py +++ b/thread_utils.py @@ -13,6 +13,19 @@ logger = logging.getLogger(__name__) def current_thread_id() -> str: + """Returns a string composed of the parent process' id, the current + process' id and the current thread identifier. The former two are + numbers (pids) whereas the latter is a thread id passed during thread + creation time. + + >>> ret = current_thread_id() + >>> (ppid, pid, tid) = ret.split('/') + >>> ppid.isnumeric() + True + >>> pid.isnumeric() + True + + """ ppid = os.getppid() pid = os.getpid() tid = threading.current_thread().name @@ -22,6 +35,26 @@ def current_thread_id() -> str: def is_current_thread_main_thread() -> bool: """Returns True is the current (calling) thread is the process' main thread and False otherwise. + + >>> is_current_thread_main_thread() + True + + >>> result = None + >>> def thunk(): + ... global result + ... result = is_current_thread_main_thread() + + >>> thunk() + >>> result + True + + >>> import threading + >>> thread = threading.Thread(target=thunk) + >>> thread.start() + >>> thread.join() + >>> result + False + """ return threading.current_thread() is threading.main_thread() @@ -136,3 +169,9 @@ def periodically_invoke( return wrapper_repeat return decorator_repeat + + +if __name__ == '__main__': + import doctest + + doctest.testmod() |
