Interrompre une fonction avec délai d'attente en Python
Lors de l'appel de fonctions qui peuvent se bloquer indéfiniment, empêchant le script de s'exécuter davantage, il devient nécessaire de mettre en œuvre un mécanisme de délai d'attente. Le package signal de Python fournit une solution à ce problème.
Le package signal, principalement utilisé dans les systèmes UNIX, vous permet de configurer un délai d'attente pour une fonction spécifique. Si la fonction dépasse le délai d'attente spécifié, un signal est émis pour interrompre l'exécution.
Exemple :
Considérons une fonction loop_forever() qui peut s'exécuter indéfiniment. Nous devons appeler cette fonction mais définir un délai d'attente de 5 secondes. Si la fonction prend plus de 5 secondes, nous souhaitons annuler son exécution.
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)
Dans cet exemple, après 5 secondes, la fonction gestionnaire est appelée, déclenchant une exception. Cette exception est interceptée dans le code parent, qui annule alors le timer et termine l'exécution de la fonction loop_forever().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!