Maison  >  Article  >  développement back-end  >  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
Susan Sarandonoriginal
2024-10-31 21:48:28835parcourir

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>

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