Ich habe ein großes Projekt, das aus einer ausreichend großen Anzahl von Modulen besteht, von denen jedes etwas auf die Standardausgabe druckt. Jetzt, da das Projekt größer geworden ist, gibt es große Nr. von printAussagen, die viel auf den Standard drucken, was das Programm erheblich langsamer gemacht hat.
Daher möchte ich jetzt zur Laufzeit entscheiden, ob etwas auf dem Standard gedruckt werden soll oder nicht. Ich kann keine Änderungen an den Modulen vornehmen, da es viele davon gibt. (Ich weiß, dass ich den Standard in eine Datei umleiten kann, aber selbst das ist sehr langsam.)
Meine Frage ist also, wie ich den Standard zu nichts umleiten kann, dh wie kann ich die printAnweisung dazu bringen, nichts zu tun?
# 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.
Derzeit ist die einzige Idee, die ich habe, eine Klasse zu erstellen, die eine Schreibmethode hat (die nichts tut) und die Standardausgabe auf eine Instanz dieser Klasse umzuleiten.
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
Gibt es dafür einen eingebauten Mechanismus in Python? Oder gibt es etwas Besseres?