Maison >développement back-end >Tutoriel Python >Comment puis-je gérer gracieusement les délais d'attente des fonctions en Python ?
Gestion du délai d'attente des fonctions en Python
Lors de l'appel d'une fonction susceptible de s'exécuter indéfiniment ou de rencontrer des problèmes nécessitant l'arrêt du script, un mécanisme de délai d'attente est utile . En Python, nous pouvons utiliser les méthodes suivantes pour gérer les délais d'attente des fonctions avec élégance.
Utilisation du module signal :
S'il est exécuté sur un système UNIX, le package signal fournit un moyen de gérer les délais d'attente. En enregistrant un gestionnaire de délai d'attente, nous pouvons annuler l'exécution de la fonction si elle dépasse le délai prédéterminé. Voici un exemple utilisant le signal :
import signal # Register a handler for the timeout def handler(signum, frame): print("Forever is over!") raise Exception("end of time") # Define a potentially long-running function def loop_forever(): import time while 1: print("sec") time.sleep(1) # Set up the signal handler signal.signal(signal.SIGALRM, handler) # Define the timeout duration (in seconds) timeout = 10 signal.alarm(timeout) # Attempt to execute the function try: loop_forever() except Exception as exc: print(exc) # Cancel the timeout after the function completes signal.alarm(0)
Lorsque la fonction loop_forever() dépasse le délai d'attente de 10 secondes, la fonction de gestionnaire est appelée, déclenchant une exception qui peut être gérée dans le code principal.
Remarque :
Il est important d'utiliser le module de signal avec prudence. Il n'est pas entièrement thread-safe, il est donc préférable d'éviter de l'utiliser dans des applications multithread.
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!