Thread- and battery-friendly time.sleep() replacement
Project description
python-snoozebot: A coordinated and interruptible time.sleep() replacement
This module implements a time.sleep() replacement, snoozebot.snooze(), which is more suitable for use in multithreaded apps:
- Threads can be woken up (optionally, with an exception) to facilitate prompt, clean shutdown.
- Snoozing can be cut short if file descriptor(s) becomes readable
- Snoozing threads can specify an interval of acceptable wakeup times, to facilitate grouping jobs together (thus hopefully playing nice with powersavings on modern/mobile CPUs).
Usage:
from snoozebot import snooze, wake_all
# Interruptable sleep for 1 second
snooze(1.0)
# Sleep for anywhere between 1 minute and 1 hour
snooze(60, 3600)
# Sleep an hour, but wake up early for activity on sys.stdin
snooze(3600, watch_fds=[sys.stdin.fileno()])
# Just wake all snoozers
wake_all()
# Wake all snoozers with a KeyboardInterrupt!
wake_all(KeyboardInterrupt, 'Time to die')
Dependencies
You will need:
- Python 2.7 or 3.x (author tested on 3.7)
Bugs
This code will fail if firewalls prevent localhost from speaking UDP with itself.
Copyright, license, credits
This code is: (C) Copyright 2020, Bjarni R. Einarsson bre@mailpile.is
Snoozebot is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Snoozebot is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with snoozebot. If not, see https://www.gnu.org/licenses/.
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 snoozebot-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe6f450992f34bc525e79bf9a80e77616a43c93f82274e62d131efefe0b63f84 |
|
MD5 | 5484fe8c0441f278f886ef352dada264 |
|
BLAKE2b-256 | 3f2b73af2ef4bf45b28e04b346d1e88ceec86caccd9186008bb2593ab96d1046 |