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)
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 | |
|---|---|---|---|
| timelimit-0.1.0.tar.gz | 3.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| timelimit-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
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
|