timelimit
Sets the time limit for slow-running functions. Runs functions in parallel threads or processes.
Tested with Python 3.6-3.9 on macOS, Ubuntu and Windows.
Install
pip3 install timelimit
Use
from timelimit import limit_thread, limit_process, TimeLimitExceeded
def sluggish(a, b):
...
return a + b
# will run sluggish(1, 2) in parallel thread no more than 5 seconds
a_plus_b = limit_thread(sluggish, (1, 2), timeout=5)
# will run sluggish(1, 2) in parallel process no more than 5 seconds
a_plus_b = limit_process(sluggish, (1, 2), timeout=5)
If the time is up
If the function did not complete its work within the specified time, a
TimeLimitExceeded exception is thrown.
try:
limit_thread(sluggish, (1, 2), timeout=5)
except TimeLimitExceeded:
print("Oops!")
If you set the default argument (at least to None), the default value is
returned instead of an exception.
result = limit_thread(sluggish, (1, 2), timeout=5, default=-1)
if result == -1:
print("Oops!")
If time doesn't matter
If you do not specify the timeout parameter it will default to float('inf').
The sluggish function will run in a parallel thread or process, but without
time constraints.
# both call run the function in parallel thread without time limits
limit_thread(sluggish, (1, 2))
limit_thread(sluggish, (1, 2), timeout=float('inf'))
If you specify the value timeout = None, then the sluggish will be
executed like a regular function, without starting processes or threads.
# the following calls are equivalent
sluggish(1, 2)
limit_thread(sluggish, (1, 2), timeout=None)
Thus, the limitation can be made optional and resource-saving.
limit_thread(sluggish, (1, 2),
timeout = 5 if in_hurry else None)
Metadata
Release files for timelimit 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| timelimit-0.1.0.tar.gz | 3.9 kB | Without provenance | Details for timelimit-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| timelimit-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for timelimit-0.1.0-py3-none-any.whl |
Total release size: 8.3 kB
Release files / timelimit-0.1.0.tar.gz
| Download URL | timelimit-0.1.0.tar.gz |
|---|---|
| Size | 3.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7584d7b3bfb7b6fd7e5c4323617ab4d6e7859ac355851ee220d5f9c2d2d9b10f
|
|
BLAKE2b-256 checksum How to use checksums |
ae680d15258ce5a4c1017f5ff8a31f4cf8eb8abc017844f771c1a28ff8795792
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5
|
Release files / timelimit-0.1.0-py3-none-any.whl
| Download URL | timelimit-0.1.0-py3-none-any.whl |
|---|---|
| Size | 4.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
efd85e7e67afdfe78fc3d8ef3af0f032a2b666174f674009813058c6846d9589
|
|
BLAKE2b-256 checksum How to use checksums |
a1b4dbf41a909bac625866a8c03c1818eed43076ea97178a05ee0272efee0507
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5
|
Security for timelimit 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.