我有一个大型项目,包括足够大数量的模块,每个模块打印一些东西到标准输出。现在随着项目规模的扩大,已经没有。的 print
语句在标准输出上打印了很多,这使得程序相当慢。
现在,我想在 运行时间决定是否要打印任何内容到标准输出。我不能在模块中进行更改,因为有很多这样的模块。(我知道我可以将标准输出重定向到一个文件,但即使这样也相当慢。)
所以我的问题是如何将标准输出重定向到空值即如何让 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.
目前我唯一的想法是创建一个具有 write 方法(它什么也不做)的类,并将 stdout 重定向到该类的一个实例。
class DontPrint(object):
def write(*args): pass
dp = DontPrint()
sys.stdout = dp
在 python 中是否有一个内置的机制来解决这个问题? 还是有比这更好的方法?