Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/imyizhang/timerthread
A lightweight task scheduling timer
https://github.com/imyizhang/timerthread
Last synced: about 2 months ago
JSON representation
A lightweight task scheduling timer
- Host: GitHub
- URL: https://github.com/imyizhang/timerthread
- Owner: imyizhang
- License: mit
- Created: 2020-12-13T01:17:02.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2020-12-13T03:44:03.000Z (about 4 years ago)
- Last Synced: 2024-11-01T17:42:59.422Z (about 2 months ago)
- Language: Python
- Homepage: https://pypi.org/project/TimerThread/
- Size: 5.86 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TimerThread
TimerThread is
* A lightweight task scheduling timer
* written in [Python (3.7+) Standard Library](https://docs.python.org/3.7/library/)TimerThread supports to
* schedule task execution after a given delay
* schedule recurring task execution
* run in the background
* use `@task` decorator to define task## Quickstart
Define your function, `now(cost)` as an example:
```python
import timedef now(cost=1):
time.sleep(cost)
print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.localtime()) )
```Create a TimerThread scheduler and start it:
```python
import timerthreadtimer = timerthread.Scheduler('recur', 3, now, args=(1,))
timer.start()
```Shutdown the scheduler:
```python
timer.cancel()
```### Play with the `@task` decorator
Use `@task` decorator to define your function, then schedule it and start the scheduler, `now(cost)` as an example:
```python
import time
import timerthread@timerthread.task('recur', 3)
def now(cost=1):
time.sleep(cost)
print( time.strftime('%Y-%m-%d %H:%M:%S %Z', time.localtime()) )timer = now.sched(cost=1)
timer.start()
```When you'd like to cancel the recurring execution, shutdown the scheduler as usual:
```python
timer.cancel()
```### Install TimerThread
```bash
$ pip install timerthread
```## Documentation
### `Scheduler`
```python
class timerthread.Scheduler(trigger, interval, fn, args=(), kwargs={})
````trigger` must be `'delay'` or `'recur'`.
* `stopped`
The scheduler is stopped or not, `True` (default) or `False`.
* `result`
The execution result, `{}` as default.
* `start()`
Let scheduler start executing your function as scheduled in the background.
* `cancel()`
Shutdown the scheduler.
### `task`
```python
class timerthread.task(trigger, interval)
````trigger` must be `'delay'` or `'recur'`.
* Use `@task` decorator to define your function, then schedule it and start the scheduler:
```python
@timerthread.task(trigger, interval)
def fn(args, kwargs):
pass
timer = fn.sched(*args, **kwargs)
````fn.sched(*args, **kwargs)` returns `timerthread.Scheduler` instance.
## Related Projects
* [`threading.Timer`](https://github.com/python/cpython/blob/3.7/Lib/threading.py#L1153) ([Timer Objects](https://docs.python.org/3.7/library/threading.html?highlight=thread#timer-objects))