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().
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