У меня большой проект, состоящий из достаточно большого количества модулей, каждый выводит что-то на стандартный вывод. Сейчас, когда проект разросся, крупных нет. из printзаявлений печати много на станд отказа , который сделал программу значительно медленнее.
Итак, теперь я хочу решить во время выполнения , печатать ли что-либо в stdout. Я не могу вносить изменения в модули, так как их много. (Я знаю, что могу перенаправить stdout в файл, но даже это значительно медленнее.)
Итак, мой вопрос: как мне перенаправить stdout ни на что, т.е. как заставить printоператор ничего не делать?
# 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.
В настоящее время единственная идея, которая у меня есть, - это создать класс, который имеет метод записи (который ничего не делает) и перенаправить стандартный вывод на экземпляр этого класса.
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
Есть ли в python для этого встроенный механизм? Или есть что-то лучше этого?