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