Streaming de la sortie de subprocess.communicate()
La fonction subprocess.communicate() de Python est utile pour capturer la sortie standard d'un processus. Cependant, il renvoie généralement toute la sortie en même temps. Cela peut être gênant pour les processus qui génèrent des résultats sur une période prolongée. Pour résoudre ce problème, nous explorons une technique permettant d'imprimer chaque ligne de la sortie standard du processus en streaming.
Solution
En employant un mécanisme itératif, nous pouvons récupérer des lignes de sortie dès qu'ils deviennent disponible :
from subprocess import Popen, PIPE # Launch a process with buffering set to 1 byte p = Popen(["cmd", "arg1"], stdout=PIPE, bufsize=1) # Iterate over the stdout lines as they become available with p.stdout: for line in iter(p.stdout.readline, b''): print(line, end='') # Wait for the process to terminate p.wait()
Explication
Notes supplémentaires
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!