Interrompendo uma função com tempo limite em Python
Ao chamar funções que podem parar indefinidamente, impedindo que o script continue a ser executado, torna-se necessário implementar um mecanismo de tempo limite. O pacote signal do Python fornece uma solução para esse problema.
O pacote signal, usado principalmente em sistemas UNIX, permite que você configure um tempo limite para uma função específica. Se a função exceder o tempo limite especificado, um sinal é gerado para interromper a execução.
Exemplo:
Considere uma função loop_forever() que pode ser executada indefinidamente. Precisamos chamar esta função, mas definir um tempo limite de 5 segundos. Se a função demorar mais de 5 segundos, queremos cancelar sua execução.
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)
Neste exemplo, após 5 segundos, a função manipuladora é chamada, gerando uma exceção. Esta exceção é capturada no código pai, que então cancela o cronômetro e encerra a execução da função loop_forever().
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3