Eu tenho um grande projeto que consiste em um número suficientemente grande de módulos, cada um imprimindo algo na saída padrão. Agora, como o projeto cresceu em tamanho, não há grandes. de print
instruções imprimindo muito no padrão, o que tornou o programa consideravelmente mais lento.
Então, agora eu quero decidir em tempo de execução se deve ou não imprimir algo no stdout. Não posso fazer alterações nos módulos, pois há muitos deles. (Eu sei que posso redirecionar o stdout para um arquivo, mas mesmo isso é consideravelmente lento.)
Portanto, minha pergunta é: como redireciono o stdout para nada, ou seja, como faço para que a print
instrução não faça 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.
Atualmente, a única idéia que tenho é criar uma classe que tenha um método de gravação (que não faça nada) e redirecionar o stdout para uma instância dessa classe.
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
Existe um mecanismo embutido em python para isso? Ou há algo melhor que isso?