Maison > développement back-end > Tutoriel Python > Comment diffuser la sortie du processus en temps réel en Python ?

Comment diffuser la sortie du processus en temps réel en Python ?

Mary-Kate Olsen
Libérer: 2024-10-29 04:15:29
original
654 Les gens l'ont consulté

How to Stream Process Output in Real-Time in Python?

Affichage continu de la sortie pendant l'exécution du processus

Dans les scripts Python, nous utilisons souvent des sous-processus pour exécuter des programmes externes. Bien qu’il s’agisse d’une fonctionnalité puissante, il peut être frustrant d’attendre la fin d’un processus avant de récupérer son résultat. Pour résoudre ce problème, explorons une méthode permettant de diffuser en continu le résultat du processus pendant son exécution.

Traditionnellement, nous utilisons subprocess.communicate() pour capturer l'intégralité du résultat d'un processus une fois qu'il est terminé. Cependant, cette approche nécessite que le processus soit entièrement terminé avant qu'une sortie puisse être affichée.

Pour activer une sortie continue, nous pouvons exploiter la fonction iter en conjonction avec fd.readline(). Cela nous permet de parcourir le flux stdout du processus, en capturant les lignes dès qu'elles deviennent disponibles :

<code class="python">import subprocess

def execute(cmd):
    popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True)
    for stdout_line in iter(popen.stdout.readline, ""):
        yield stdout_line 
    popen.stdout.close()
    return_code = popen.wait()
    if return_code:
        raise subprocess.CalledProcessError(return_code, cmd)</code>
Copier après la connexion

Dans cette version améliorée, nous renvoyons chaque ligne de stdout dès qu'elle devient disponible. Cela permet au script d'afficher le résultat en continu au fur et à mesure qu'il est généré par le processus.

Voici un exemple illustratif :

<code class="python">for path in execute(["locate", "a"]):
    print(path, end="")</code>
Copier après la connexion

En utilisant cette approche, nous pouvons afficher en continu les chemins correspondant à la requête de recherche. "a" tels qu'ils sont trouvés par la commande "locate", fournissant un retour en temps réel sur la progression du processus.

Cette technique permet un suivi continu des sorties, améliorant l'interactivité et l'expérience utilisateur des scripts qui lancer des processus externes.

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