Il est parfois nécessaire d'avoir une sortie non bufferisée, si nous voulons des output temps réél par exemple.

Pour cela, on peut utiliser une classe qui permettra d'obtenir un objet surchargé :

#!/usr/bin/env python3 

import sys, os

class Unbuffered(object):
    def __init__(self, stream):
        self.stream = stream

    def write(self, data):
        self.stream.write(data)
        self.stream.flush()

    def writelines(self, datas):
        self.stream.writelines(datas)
        self.stream.flush()

    def __getattr__(self, attr):
        return getattr(self.stream, attr)

sys.stdout = Unbuffered(sys.stdout)