


Comment diffuser la sortie du sous-processus en temps réel à l'aide de « subprocess.communicate() » de Python ?
Jan 01, 2025 am 12:30 AMStreaming de la sortie de subprocess.communicate()
En Python, utiliser subprocess.communicate() pour lire la sortie standard d'un processus qui s'exécute pendant une période prolongée peut être problématique. La sortie résultante est reçue en une seule fois, ce qui gêne l'affichage en temps réel.
Pour surmonter ce problème, il est possible d'imprimer chaque ligne de la sortie standard au fur et à mesure de sa génération tout en garantissant la fin du processus avant de continuer :
Python 2
#!/usr/bin/env python2 from subprocess import Popen, PIPE p = Popen(["cmd", "arg1"], stdout=PIPE, bufsize=1) with p.stdout: for line in iter(p.stdout.readline, b''): print(line) p.wait() # Wait for subprocess termination
Python 3
#!/usr/bin/env python3 from subprocess import Popen, PIPE with Popen(["cmd", "arg1"], stdout=PIPE, bufsize=1, universal_newlines=True) as p: for line in p.stdout: print(line, end='')
Cette approche modifiée lit en continu les lignes au fur et à mesure de leur écriture, en contournant le délai du tampon. Le processus conserve toujours son comportement de blocage, interrompant l'exécution jusqu'à la fin.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment utiliser la belle soupe pour analyser HTML?

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte

Comment travailler avec des documents PDF à l'aide de Python

Comment se cacher en utilisant Redis dans les applications Django

Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch?

Sérialisation et désérialisation des objets Python: partie 1

Comment implémenter votre propre structure de données dans Python
