Maison > développement back-end > Tutoriel Python > Comment obtenir une sortie en temps réel de Subprocess.Popen en Python ?

Comment obtenir une sortie en temps réel de Subprocess.Popen en Python ?

DDD
Libérer: 2024-11-14 19:32:02
original
665 Les gens l'ont consulté

How to Get Realtime Output from Subprocess.Popen in Python?

Obtenir une sortie en temps réel à l'aide d'un sous-processus

Subprocess est un module puissant en Python utilisé pour exécuter d'autres programmes et interagir avec leurs entrées et sorties. Cependant, les utilisateurs peuvent rencontrer un scénario dans lequel ils doivent récupérer la sortie du programme exécuté en temps réel, sans aucune mise en mémoire tampon.

Description du problème

Le problème survient lors de l'utilisation subprocess.Popen avec stdout défini comme un tube. La sortie du programme encapsulé semble être mise en mémoire tampon, ce qui entraîne des morceaux de données plutôt qu'une livraison ligne par ligne. Définir le paramètre bufsize sur 1 ou 0 ne résout pas le problème.

Solution : lecture itérative à partir de readline()

Malgré le comportement du sous-processus susmentionné, l'extrait de code suivant récupère efficacement la sortie en temps réel :

while True:
  line = p.stdout.readline()
  if not line: break
  ...
Copier après la connexion

L'utilisation de readline() au lieu d'itérer sur p.stdout contourne directement le problème de mise en mémoire tampon et permet une récupération de sortie en temps réel.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal