Simple subclass wrapper around `threading.Thread` to get the return value from a thread in python. Exact same interface as `threading.Thread`! 🌟 Star this repo if you found it useful! 🌟
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for save-thread-result-0.1.1.post1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46a214c1e204a8c4f92d293d0c121bb7bd38db98d79dc9b9384edce9dfbf0cbd |
|
MD5 | cad5e4bb9e679bbc4bd86418d623dc19 |
|
BLAKE2b-256 | 6d45c05c254fb5e074f08a66882a9b0524509bf61a9c4d2b32409bf5ba13b84d |
Hashes for save_thread_result-0.1.1.post1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f78b4eac2e49b0978c86d2a0d5465dda5ec2f47c94c202b323e57d74eca3a34 |
|
MD5 | 6a01e6f36da71f2c2200933a694f2b4c |
|
BLAKE2b-256 | af6dfbf21b350439dc05bb7c8ed8fccd35f9be7186c1621cf8a08a6f1e2626bb |