jthreads
jthreads is a Python library that extends on the Python Thread class by adding extra functionality such as LoopingThread, Timer, Interval, CountdownTimer and CallbackCountdownTimer.
Installation
Use the package manager pip to install jthreads.
pip install jthreads
Usage
LoopingThread
from jstreams import LoopingThread
from time import sleep
class MyThread(LoopingThread):
def __init__(self) -> None:
LoopingThread.__init__(self)
self.count = 0
def loop(self) -> None:
# Write here the code that you want executed in a loop
self.count += 1
print(f"Executed {self.count} times")
# This thread calls the loop implementation with no delay. Any sleeps need to be handled in the loop method
sleep(1)
thread = MyThread()
thread.start()
sleep(5)
# Stop the thread from loopiong
thread.cancel()
CallbackLoopingThread
This looping thread doesn't require overriding the loop method. Instead, you provide a callback
from jthreads import CallbackLoopingThread
from time import sleep
def threadCallback() -> None:
print("Callback executed")
sleep(1)
thread = CallbackLoopingThread(threadCallback)
# will print "Callback executed" until the thread is cancelled
thread.start()
sleep(5)
# Stops the thread from looping
thread.cancel()
Timer
The Timer thread will start counting down to the given time period, and execute the provided callback once the time period has ellapsed. The timer can be cancelled before the period expires.
from jthreads import Timer
from time import sleep
timer = Timer(10, 1, lambda: print("Executed"))
timer.start()
# After 10 seconds "Executed" will be printed
from jthreads import Timer
from time import sleep
# The first parameter is the time period, the second is the cancelPollingInterval.
# The cancel polling interval is used by the timer to check if cancel was called on the timer.
timer = Timer(10, 1, lambda: print("Executed"))
timer.start()
sleep(5)
timer.cancel()
# Nothing will be printed, as this timer has been canceled before the period could ellapse
Interval
The interval executes a given callback at fixed intervals of time.
from jthreads import Interval
from time import sleep
interval = Interval(2, lambda: print("Interval executed"))
interval.start()
# Will print "Interval executed" every 2 seconds
sleep(10)
# Stops the interval from executing
interval.cancel()
CountdownTimer
The countdown timer is similar in functionality with the Timer class, with the exception that this timer cannot be canceled. Once started, the callback will always execute after the period has ellapsed.
from jthreads import CountdownTimer
CountdownTimer(5, lambda: print("Countdown executed")).start()
# Will always print "Countdown executed" after 5 seconds
License
Metadata
Release files for jthreads 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jthreads-1.0.1.tar.gz | 5.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jthreads-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.6 kB
Release files / jthreads-1.0.1.tar.gz
| Download URL | jthreads-1.0.1.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f84ccd86b78b2c7b44b4ca9f07727185ad9b8a503de419b359a363836a739ed
|
|
BLAKE2b-256 checksum How to use checksums |
f3c7f4c86907bad4e22407c35bd9b161ffa13710ff86d4dc29d11f0d49d83699
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.3
|
Release files / jthreads-1.0.1-py3-none-any.whl
| Download URL | jthreads-1.0.1-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ac75fbb5929aab9377c13aaa5ff959b6a66e6d78cc42b9dd02e4689bff850127
|
|
BLAKE2b-256 checksum How to use checksums |
a682c3614ab5ad9c6dc63785fad87c4c7c099ea7367ef98f8a17068696dc09be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.3
|