summaryrefslogtreecommitdiff
path: root/thread_utils.py
diff options
context:
space:
mode:
authorScott <[email protected]>2022-01-27 13:42:09 -0800
committerScott <[email protected]>2022-01-27 13:42:09 -0800
commitb3ef553f4f30614b97e23f2d4ad6d6576ec57adf (patch)
treea8ad1d0d07d6ba439b020581360f896ad1a737ea /thread_utils.py
parentc901f3eb1acf78fd4933d8faeedc517ccafe627e (diff)
Adding test code trying to improve test coverage.
Diffstat (limited to 'thread_utils.py')
-rw-r--r--thread_utils.py39
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()