Maison > développement back-end > Tutoriel Python > Comment puis-je ajouter un délai d'attente aux appels de sous-traitement en Python ?

Comment puis-je ajouter un délai d'attente aux appels de sous-traitement en Python ?

DDD
Libérer: 2024-12-14 02:33:09
original
175 Les gens l'ont consulté

How Can I Add a Timeout to Subprocess Calls in Python?

Utilisation du module de sous-processus avec fonctionnalité de délai d'attente

La nécessité pour un sous-processus de terminer son exécution dans un laps de temps prédéfini survient souvent en programmation. Bien que le module de sous-processus offre un mécanisme robuste pour exécuter des commandes, il manque intrinsèquement de capacités de délai d'attente.

Pour remédier à cette limitation, Python 3.3 et versions ultérieures fournissent la fonction check_output dans le module de sous-processus. Cette fonction récupère non seulement les données stdout de la commande, mais déclenche également une exception lorsque le processus dépasse le délai d'attente spécifié.

from subprocess import STDOUT, check_output

# Set the timeout in seconds
timeout = 5

try:
    # Execute the command with the specified timeout
    output = check_output(cmd, stderr=STDOUT, timeout=timeout)
except CalledProcessError as e:
    # Handle the error if the process fails with a non-zero exit status
    pass

# Process the merged stdout/stderr data contained in the output variable
Copier après la connexion

Dans ce code, la variable timeout détermine le temps d'exécution maximum autorisé pour la commande. check_output garantit que le processus se termine et renvoie la sortie stdout/stderr combinée dans le délai spécifié.

Alternativement, pour les utilisateurs de Python 2.x, le backport subprocess32 du module subprocess offre la même fonctionnalité. Ce rétroportage fournit une solution équivalente à check_output, permettant l'exécution de commandes tenant compte du délai d'attente sous Python 2.x.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal