Skip to main content

ReThread

Minimalistic Python Library for Easy Multithreading

Installation

Linux/Mac

python3 -m pip install -U rethread

Windows

py -3 -m pip install -U rethread

Example

import rethread
import time

@rethread.auto
def my_long_function():
    time.sleep(10)

    return 'a'

def some_other_function():
    for i in range(3):
        time.sleep(1)
        print(i)

def another_function(t: rethread.RunningThread):
    time.sleep(10)

    if t.done:
        print('thread is finished!')


with my_long_function() as t:
    some_other_function()
    another_function(t)

print(thread.value)

Usage

To create a thread, you can use the rethread.thread function, like so:

import rethread

def long_function():
    ...

thread: rethread.RunningThread = rethread.thread(long_function)

If you would like to pass in parameters, simply pass them in to the *args and **kwargs of the rethread.thread call. For example:

import rethread

def long_function(a: str, b: str, some_kwarg: str = 'c'):
    ...

thread: rethread.RunningThread = rethread.thread(long_function, 'a', 'b', some_kwarg = 'c')

If you plan on always running a function in a thread, you can use rethread.auto to automatically thread a function:

@rethread.auto
def long_function():
    ...

thread: rethread.RunningThread = long_function() # no need for a call to rethread.thread

To get the return value of the threaded function, access the RunningThread.value attribute.

An error will be raised if the thread is still running, so make sure to call wait() on the thread.

@rethread.auto
def long_function() -> str:
    ...

    return 'hi'

t = long_function()
t.wait() # wait for the thread to finish
print(t.value) # hi

Alternatively, you can use the context manager syntax to automatically wait for the thread to finish:

@rethread.auto
def long_function() -> str:
    ...

    return 'hi'

t = long_function()
with t:
    do_something()
    # once everything in this context is finished, rethread automatically waits for the thread to finish

print(t.value) # hi

Release files for rethread 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rethread 1.0.1
File Size Uploaded
rethread-1.0.1.tar.gz 2.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rethread 1.0.1
File Interpreter ABI Platform
rethread-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 5.8 kB

Release files / rethread-1.0.1.tar.gz

Download URL rethread-1.0.1.tar.gz
Size 2.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2b5f073bdd58313a68fe866c0d77b59795a3c609685d19b0c5d70f278fa0f8c5
BLAKE2b-256 checksum
How to use checksums
55f9226ab4bdc57b3d015f08cde3d7a329d0e9059e25a5a5c06fdfc6ce3c6c3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.22.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.1 keyring/18.0.1 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

Release files / rethread-1.0.1-py3-none-any.whl

Download URL rethread-1.0.1-py3-none-any.whl
Size 3.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e4b6b9515796ce9b534e0075753176e60ab5bab4c3905100630cf92898affb6
BLAKE2b-256 checksum
How to use checksums
858e40d040dbee82708c8d99e54580edd14d46baabc2f81d37c0c3dafa49174d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.22.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.1 keyring/18.0.1 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page