Skip to main content

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)

Source distribution for timelimit 0.1.0
File Size Uploaded
timelimit-0.1.0.tar.gz 3.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for timelimit 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page