Maison > développement back-end > Tutoriel Python > Comment gérer les délais d'attente des fonctions en Python ?

Comment gérer les délais d'attente des fonctions en Python ?

Susan Sarandon
Libérer: 2024-12-24 10:13:45
original
339 Les gens l'ont consulté

How to Handle Function Timeouts in Python?

Gestion des délais d'attente des fonctions en Python

Lors de l'appel d'une fonction susceptible de bloquer, il devient crucial d'avoir un mécanisme en place pour gérer correctement de telles situations et empêcher le script de se bloquer indéfiniment. Une solution efficace à ce problème consiste à définir un délai d'attente pour l'appel de fonction.

Le module de signal Python fournit la fonctionnalité nécessaire pour enregistrer un gestionnaire de signal qui sera invoqué si la fonction dépasse le délai d'attente spécifié. Voici comment cela peut être implémenté :

import signal

def handler(signum, frame):
    print("Timeout reached!")
    raise Exception("Function call timed out")

def function_to_timeout():
    print("Running function...")
    # Simulate a long-running task
    for i in range(10):
        time.sleep(1)

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

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

try:
    # Call the function
    function_to_timeout()
except Exception as exc:
    print(exc)
Copier après la connexion

Lorsque function_to_timeout() est appelée, elle imprimera un message indiquant qu'elle est en cours d'exécution. Le signal.alarm(5) définit un délai d'attente de 5 secondes, après quoi la fonction de gestionnaire sera déclenchée. Dans le gestionnaire, une exception est levée pour mettre fin à l'appel de fonction.

Cette approche vous permet de définir un délai d'attente spécifique pour la fonction et de quitter le script en douceur au cas où la fonction prendrait plus de temps que le temps spécifié.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal