在python中无效打印语句

时间:2013-06-27 12:44:10

标签: python

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

如何决定关闭所有打印件?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

为了节省系统调用,您可以将sys.stdout替换为什么都不做的Writer。 例如:

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

sys.stdout = NullWriter()

显然,此前已为askedsolved。还here

如果您使用的是python 3,则可以将print函数重载为 看到in this answer

def print(*args, **kwargs):
    pass