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
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!