{"library":"stopit","title":"stopit: Timeout Control for Python","type":"library","description":"stopit is a Python library that provides flexible mechanisms for controlling the execution time of code blocks and functions. It offers both context managers and decorators to enforce timeouts and can raise exceptions in other threads. The current version is 1.1.2, with its last major update in 2018, indicating a maintenance-focused release cadence.","language":"python","status":"maintenance","last_verified":"Sun May 17","install":{"commands":["pip install stopit"],"cli":null},"imports":["from stopit import ThreadingTimeout","from stopit import threading_timeoutable","from stopit import TimeoutException","from stopit import async_raise"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":"http://pypi.python.org/pypi/stopit","github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/stopit/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import stopit\nimport time\n\nprint(\"Starting long running task with 5-second timeout...\")\nwith stopit.ThreadingTimeout(5) as context_manager:\n    # Simulate a long-running operation\n    for i in range(10**8):\n        _ = i * 2 # Some computation\n        if not context_manager.state == context_manager.EXECUTING: # Optional: check state inside loop\n            break\n\nif context_manager.state == context_manager.EXECUTED:\n    print(\"Task completed within timeout.\")\nelif context_manager.state == context_manager.TIMED_OUT:\n    print(\"Task timed out after 5 seconds.\")\n\n# Example using a decorator\n@stopit.threading_timeoutable(default='Timed out!')\ndef potentially_long_function(timeout=1, max_iterations=10**8):\n    print(f\"  Function starting with {timeout}s timeout...\")\n    for i in range(max_iterations):\n        _ = i * 2\n        time.sleep(0.001) # Small sleep to allow thread context switching\n    return \"Function completed.\"\n\nresult = potentially_long_function(timeout=2)\nprint(f\"Decorator result: {result}\")\n\nresult_fast = potentially_long_function(timeout=10, max_iterations=1000)\nprint(f\"Decorator result (fast completion): {result_fast}\")","lang":"python","description":"This quickstart demonstrates using `stopit.ThreadingTimeout` as a context manager and `stopit.threading_timeoutable` as a decorator to limit the execution time of code. The context manager allows checking its state to determine if execution completed or timed out. The decorator automatically returns a default value if the function exceeds its allowed time.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"1.1.2","pypi_latest":"1.1.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.4,"avg_import_s":0.34,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.32,"mem_mb":8.4,"disk_size":"19.4M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":2,"import_time_s":0.23,"mem_mb":9.1,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.49,"mem_mb":9.5,"disk_size":"21.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.1,"import_time_s":0.45,"mem_mb":10.2,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":3,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":2.6,"import_time_s":null,"mem_mb":null,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.29,"mem_mb":8.2,"disk_size":"19.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"stopit","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.3,"import_time_s":0.26,"mem_mb":8.9,"disk_size":"19M"}]}}