Maison > développement back-end > Tutoriel Python > Comment puis-je implémenter une limite de temps pour un appel de fonction afin d'éviter le blocage ?

Comment puis-je implémenter une limite de temps pour un appel de fonction afin d'éviter le blocage ?

Susan Sarandon
Libérer: 2024-11-22 09:24:15
original
273 Les gens l'ont consulté

How Can I Implement a Time Limit for a Function Call to Prevent Blocking?

Implémentation d'une exécution de fonction limitée dans le temps

Dans votre code, vous rencontrez un appel de fonction lié au socket provenant d'un module externe qui se bloque occasionnellement pendant des durées inacceptables. Vous cherchez une solution pour limiter le temps d'exécution de cet appel de fonction. Une approche viable implique l'utilisation d'un autre thread.

Une version raffinée de la réponse acceptée exploite l'instruction with pour améliorer la syntaxe de la fonction timeout :

import signal
from contextlib import contextmanager

class TimeoutException(Exception): pass

@contextmanager
def time_limit(seconds):
    def signal_handler(signum, frame):
        raise TimeoutException("Timed out!")
    signal.signal(signal.SIGALRM, signal_handler)
    signal.alarm(seconds)
    try:
        yield
    finally:
        signal.alarm(0)

try:
    with time_limit(10):
        long_function_call()
except TimeoutException as e:
    print("Timed out!")
Copier après la connexion

En incorporant ce code, vous pouvez gérer les délais pour les appels de fonction et gérer efficacement les exceptions de délai d'attente.

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