0

我使用了一个打印很多的内部库(一个脚本总共可以打印 40000 行),我想它可能会对性能产生不良影响。这是我公司的另一个团队开发的一个库,并进行了大量计算,它们打印以调试错误(我知道这不是一个好习惯,但为时已晚,因为已经有 100 个脚本在生产中)而且我正在开发使用 100 个脚本生成结果的脚本。

我怎样才能决定关闭所有这些打印?

我不是在问如何将这些行打印到文件中,而是完全省略它

4

2 回答 2

7

替换sys.stdout为吃掉输出的对象:

import sys

class Null:
    def write(self, text):
        pass

    def flush(self):
        pass

print "One"            # This gets output OK
old_stdout = sys.stdout
sys.stdout = Null()
print "Two"            # This disappears
sys.stdout = old_stdout
print "Three"          # Output, back to normal
于 2013-06-27T12:47:27.460 回答
2

最好的方法是简单地删除打印语句,因为没有任何开销。

或者,您可以将输出重定向到/dev/null,这将有效地消除 I/O 开销,但不会消除系统调用。

为了节省系统调用,您可以用sys.stdout不执行任何操作的 Writer 替换。例如:

class NullWriter():
    def write(self, s): pass

sys.stdout = NullWriter()

显然,这已经被过并解决了。也在这里

如果您使用的是 python 3,则可以重载该print函数,如本答案所示:

def print(*args, **kwargs):
    pass
于 2013-06-27T12:48:27.040 回答