Print et Popen ordre d'exécution

Print et Popen ordre d'exécution - Python - Programmation

Marsh Posté le 16-07-2010 à 11:35:25    

Salut à tous,
 
J'ai un soucis au sein d'un de mes scripts python lorsque je tente de rediriger la sortie vers "tee".
 
95% des messages normalement affichés par mon programme n'apparaisse ni dans le terminal ni dans le fichier passé en argument à tee.
 
J'ai donc réalisé un petit test et je tombe sur un comportement que je trouve étrange. En exemple :
 

Code :
  1. from subprocess import Popen
  2.  
  3. print "Normal print"
  4.  
  5. p0 = Popen("echo Popen echo",shell=True)
  6. p0.wait()


 
Execution de : "python test.py"

Code :
  1. Normal print
  2. Popen echo


 
Execution de "python test.py | tee log"

Code :
  1. Popen echo
  2. Normal print


 
D'où vient le fait que l'ordre des print diffère suivant la manière dont la sortie est redirigée ?
 
Merci d'avance.
 
Cordialement,
Sébastien.


Message édité par Sebxoii le 16-07-2010 à 11:53:18
Reply

Marsh Posté le 16-07-2010 à 11:35:25   

Reply

Marsh Posté le 16-07-2010 à 11:53:07    

Problème réglé. Cela vient du buffer stdout.
 
Exécuter python en mode unbuffered "-u" remet les print dans l'ordre.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed