Name: signalled-timeout
Owner: Data Science for Social Good
Description: Timeout library for generic interruption of main thread by an exception after a configurable duration.
Created: 2017-11-08 18:04:56.0
Updated: 2017-11-08 21:26:14.0
Pushed: 2017-11-08 21:50:51.0
Size: 4
Language: Python
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Timeout library for generic interruption of main thread by an exception after a configurable duration.
Set a timeout (seconds) upon expiration of which an exception is raised:
from timeout import timeout
…as a context manager:
with timeout(0.5):
... work ...
…or decorating a function:
@timeout(0.5)
def work():
...
The exception may be configured, either by passing an exception instance, or by specifying an overriding exception class and/or value(s):
with timeout(0.5, RuntimeError("Work took too long")):
... work ...
with timeout(0.5, RuntimeError, "Work took too long"):
... work ...
with timeout(0.5, exc=RuntimeError):
... work ...
with timeout(0.5, value="Work took too long"):
... work ...
with timeout(0.5, value=(2, "Took too long", 'work.py')):
... work ...
The timeout exception defaults to TimeoutError("Operation timed out")
.
Note: timeout
is implemented via signal
, and as such may not be applied outside of a process's main thread.
signalled-timeout
is a Python distribution, which may be installed via easy_install
or pip
, e.g.:
pip install signalled-timeout
…or, from source:
python setup.py install
To test the distribution on your system, execute its test
command:
python setup.py test