"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo interrumpir la ejecución de una función de Python con un tiempo de espera?

¿Cómo interrumpir la ejecución de una función de Python con un tiempo de espera?

Publicado el 2025-01-16
Navegar:809

How to Interrupt a Python Function Execution with a Timeout?

Interrumpir una función con tiempo de espera en Python

Al llamar a funciones que pueden detenerse indefinidamente, impidiendo que el script se ejecute más, es necesario implementar un mecanismo de tiempo de espera. El paquete signal de Python proporciona una solución para este problema.

El paquete signal, utilizado principalmente en sistemas UNIX, le permite configurar un tiempo de espera para una función específica. Si la función excede el tiempo de espera especificado, se genera una señal para interrumpir la ejecución.

Ejemplo:

Considere una función loop_forever() que puede ejecutarse indefinidamente. Necesitamos llamar a esta función pero establecer un tiempo de espera de 5 segundos. Si la función tarda más de 5 segundos, queremos cancelar su ejecución.

import signal

# Register a handler for the timeout
def handler(signum, frame):
    print("Timeout! Cancelling function execution.")
    raise Exception("Timeout exceeded!")

# Register the signal function handler
signal.signal(signal.SIGALRM, handler)

# Define a timeout of 5 seconds
signal.alarm(5)

try:
    loop_forever()
except Exception as e:
    print(str(e))
    
# Cancel the timer if the function finishes before timeout
signal.alarm(0)

En este ejemplo, después de 5 segundos, se llama a la función del controlador, lo que genera una excepción. Esta excepción queda atrapada en el código principal, que luego cancela el temporizador y finaliza la ejecución de la función loop_forever().

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3