• [^] # Re: Bufferiser soi-même, ou laisser l'OS faire

    Posté par . En réponse au message écrire la sortie d'un générateur. Évalué à 1.

    j'ai testé avec

    with io.StringIO() as s:
     for i, c in enumerate(gen()):
     s.write(c)
     if (i+1) % 4096 == 0:
     sys.stdout.write(s.getvalue())
     s.truncate(0)
     sys.stdout.write(s.getvalue())

    et j'obtiens comme résultats (en secondes):
    write direct 2.623428489023354
    join du total 0.563591810001526
    join par block 0.5687419429887086
    StringIO 2.5268013479653746

    le soucis de ta solution c'est qu'on fait un paquet d'appels à write (même si derrière y'a pas d'appel système à chaque fois)