IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

print vs sys.stdout.write


Sujet :

Python

Vue hybride

Zorro print vs sys.stdout.write 10/05/2007, 09h28
pacificator Salut, print utilise... 10/05/2007, 10h27
Zorro Merci pacificator :ccool: ... 10/05/2007, 10h46
jhonnyBravo au lieu des \\ , mets des / ... 11/05/2007, 01h02
pacificator l'ideal c'est os.path.join... 11/05/2007, 01h07
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de Zorro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Par défaut print vs sys.stdout.write
    Bonjour,

    Je me demande quelle est la différence entre:

    Et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import sys
    >>> sys.stdout.write('Hello world')
    Mise a part le fait qu’il y a plus de caractères dans la deuxième option , mais moi je cherche à savoir la différence au niveau performance.

    Merci
    Z

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Salut,

    print utilise sys.stdout.write (vu sur python.org):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import sys
    save_sys = sys.stdout
    f = open('../log.txt', 'w')
    sys.stdout = f
    print "ceci est un test"
    sys.stdout = save_sys
    f.close()
    open('../log.txt').read()
    Testons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    import random
    import sys
    from timeit import Timer
     
    ITERATIONS = 100
     
    def f1(chaine):
        print chaine
     
    def f2(chaine):
       sys.stdout.write(chaine)
     
    if __name__ == '__main__':
     
        chaine = []
        for j in range(2000):
            chaine.append(chr(random.randrange(ord('a'), ord('z'))))
        chaine = ''.join(chaine)
     
        t1 = Timer('f1(chaine)', 'from __main__ import f1, chaine')
        t2 = Timer('f2(chaine)', 'from __main__ import f2, chaine')
        T1 = min(t1.repeat(3,ITERATIONS))
        T2 = min(t2.repeat(3,ITERATIONS))
        print "\tf1:", T1, "s"
        print "\tf2:", T2, "s"
    j'obtiens:
    f1: 0.144654977099 s
    f2: 0.128001743238 s
    f1: 7.24871093952 s
    f2: 6.84964290154 s
    f1: 7.2160875195 s
    f2: 6.86960800884 s
    Le print est plus lent (parsing plus lent? transformation des arguments en str?)

  3. #3
    Membre confirmé
    Avatar de Zorro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Par défaut
    Merci pacificator



    Z

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 80
    Par défaut
    au lieu des \\ , mets des /

    non?

    je débute en python mais c classique ds de nombreux languages

    ++

  5. #5
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    l'ideal c'est os.path.join mais ca path chez moi et je suis allé vite

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 80
    Par défaut
    non non sans parler de os.path.join cest juste par clarté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb avec fonction WScript.StdOut.Write
    Par gigi92 dans le forum VBScript
    Réponses: 1
    Dernier message: 31/01/2008, 22h32
  2. Pourquoi "print" est OK et ".write()" KO ?
    Par santaflam dans le forum Général Python
    Réponses: 16
    Dernier message: 30/09/2007, 01h07
  3. [codage][console] différence entre print et sys.stdout.write
    Par MorganStern dans le forum Général Python
    Réponses: 1
    Dernier message: 03/08/2007, 19h20
  4. Insertion automatisée: write? print?
    Par vigon dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 18/10/2006, 16h24
  5. [VB 6] Difference entre write et print - fichiers
    Par Chocapic dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/06/2006, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo