Tengo un gran proyecto que consta de un número suficientemente grande de módulos, cada uno imprimiendo algo en la salida estándar. Ahora que el proyecto ha crecido en tamaño, hay grandes no. de printdeclaraciones que imprimen mucho en la salida estándar lo que ha hecho que el programa sea considerablemente más lento.
Entonces, ahora quiero decidir en tiempo de ejecución si imprimir o no algo en el stdout. No puedo hacer cambios en los módulos, ya que hay muchos. (Sé que puedo redirigir el stdout a un archivo, pero incluso esto es considerablemente lento).
Entonces, mi pregunta es ¿cómo redirijo el stdout a nada, es decir, cómo hago que la printdeclaración no haga nada?
# 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.
Actualmente, la única idea que tengo es crear una clase que tenga un método de escritura (que no hace nada) y redirigir el stdout a una instancia de esta clase.
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
¿Hay un mecanismo incorporado en Python para esto? ¿O hay algo mejor que esto?