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