我使用的内部库打印很多(一个脚本总共可以打印40000行),我想它可能会对性能产生不良影响。这是一个由我公司的另一个团队开发并进行大量计算的库,他们打印出来调试错误(我知道这不是一个好习惯,但由于已经有100个脚本在生产,所以已经太晚了) 我正在开发一个使用100个脚本来生成结果的脚本。
如何决定关闭所有打印件?
我不是要问如何将这些行打印到文件中,而是完全省略它
答案 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()
如果您使用的是python 3,则可以将print
函数重载为
看到in this answer:
def print(*args, **kwargs):
pass