0 purchases
savethreadresult 0.1.1.post1
Python API
Quickstart
Installing the save_thread_result module:
pip3 install -U save-thread-result # MacOS/Linux
pip install -U save-thread-result # Windows
# if that doesn't work:
python3 -m pip install -U save-thread-result # MacOS/Linux
python -m pip install -U save-thread-result # Windows
Using the ThreadWithResult class from the save_thread_result module:
from save_thread_result import ThreadWithResult
# As of Release 0.0.3, you can also specify values for
# `group`, `name`, and `daemon` if you want to set those
# values manually.
thread = ThreadWithResult(
target = my_function,
args = (my_function_arg1, my_function_arg2, ...)
kwargs = {my_function_kwarg1: kwarg1_value, my_function_kwarg2: kwarg2_value, ...}
)
thread.start()
thread.join()
if getattr(thread, 'result', None):
print(thread.result)
else:
# thread.result attribute not set - something caused
# the thread to terminate BEFORE the thread finished
# executing the function passed in through the
# `target` argument
print('ERROR! Something went wrong while executing this thread, and the function you passed in did NOT complete!!')
Reading the documentation for more information:
from save_thread_result import ThreadWithResult
help(ThreadWithResult)
Short explanation
This module uses a threading.Thread subclass ThreadWithResult that saves the result of a thread (from threading built-in module in the Python Standard library) as its result attribute - i.e. after the thread finishes running, call thread.result to get the return value from the function that ran on that thread.
Examples
Dummy example:
from save_thread_result import ThreadWithResult
import time, random, threading
def function_to_thread(n):
count = 0
while count < 3:
print(f'Still running {threading.current_thread().name}...')
count +=1
time.sleep(3)
result = random.random()
print(f'Return value of {threading.current_thread().name} should be: {result}')
return result
def main():
thread1 = ThreadWithResult(target=function_to_thread, args=(1,))
thread2 = ThreadWithResult(target=function_to_thread, args=(2,))
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print(f'The `result` attribute of {thread1.name} is: {thread1.result}')
print(f'The `result` attribute of {thread2.name} is: {thread2.result}')
main()
More information
Sources I looked at before creating the custom class
Return value from thread
Threading in python: retrieve return value when using target= [duplicate]
How to get the return value from a thread in python?
Using Python Threading and Returning Multiple Results (Tutorial)
How to get the return value from a thread using python
How to manage python threads results?
How to obtain the results from a pool of threads in python?
Google search
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.