Ho un grande progetto costituito da un numero sufficientemente elevato di moduli, ognuno dei quali stampa qualcosa sullo standard output. Ora che il progetto è cresciuto in dimensioni, ci sono grandi no. di printistruzioni che stampano molto su STD, il che ha notevolmente rallentato il programma.
Quindi, ora voglio decidere in fase di esecuzione se stampare o meno qualcosa sullo stdout. Non posso apportare modifiche ai moduli in quanto ce ne sono molti. (So di poter reindirizzare lo stdout su un file ma anche questo è considerevolmente lento.)
Quindi la mia domanda è: come reindirizzare lo stdout a niente, cioè come faccio a fare in modo che la printdichiarazione non faccia nulla?
# I want to do something like this.
sys.stdout = None # this obviously will give an error as Nonetype object does not have any write method.
Attualmente l'unica idea che ho è quella di creare una classe che abbia un metodo di scrittura (che non fa nulla) e reindirizzare lo stdout a un'istanza di questa classe.
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
Esiste un meccanismo integrato in Python per questo? O c'è qualcosa di meglio di questo?