Maison > développement back-end > Tutoriel Python > Comment imprimer la sortie du sous-processus en temps réel pendant son exécution ?

Comment imprimer la sortie du sous-processus en temps réel pendant son exécution ?

Susan Sarandon
Libérer: 2024-10-31 21:48:28
original
966 Les gens l'ont consulté

How to Print Subprocess Output in Real-Time While It's Running?

Imprimer en permanence la sortie du sous-processus pendant l'exécution du processus

Problème

Pour les programmes lancés à l'aide du module de sous-processus de Python, le programme doit attendre la fin de l'exécution du sous-processus avant que sa sortie soit accessible. Cela peut être gênant pour les processus de longue durée, car cela empêche le programme de continuer jusqu'à la fin du sous-processus.

Solution

Pour permettre l'impression en temps réel de la sortie du sous-processus, en itérant sur le sous-processus Le flux de sortie peut être utilisé. Cela permet au programme de traiter les lignes de sortie dès qu'elles deviennent disponibles.

Vous trouverez ci-dessous un exemple qui illustre cette approche :

<code class="python">from __future__ import print_function  # Python 2.x compatibility

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)

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

En utilisant cette approche itérative, le programme peut traiter sortie du sous-processus ligne par ligne dès qu'elle devient disponible, permettant l'affichage de la sortie en temps réel pendant l'exécution du sous-processus.

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!

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