Lors de l'utilisation d'un sous-processus dans des scripts Python, il peut être frustrant d'attendre la fin d'un processus avant d'accéder à sa sortie. Cela devient particulièrement évident pour les processus longs. Par conséquent, il devient nécessaire de trouver un moyen d'afficher en continu la sortie au fur et à mesure qu'elle est générée.
Pour y parvenir, vous pouvez utiliser la fonction iter pour traiter les lignes immédiatement après leur sortie par la commande. L'exemple de code suivant illustre un cas d'utilisation courant :
<code class="python">from __future__ import print_function # Only Python 2.x 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 méthode, vous pouvez diffuser efficacement la sortie d'un processus pendant son exécution, éliminant ainsi le besoin d'attendre son achèvement.
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!