我使用内部库打印很多(一个脚本总共可打印40000行),并且我认为它可能对性能造成不良影响。这是由我公司的另一个团队开发的一个库,并进行了大量计算,它们打印以调试错误(并且我知道这不是一个好习惯,但由于生产中已有100个脚本,所以太晚了) 和我开发一个使用100个脚本来产生结果的脚本。python中的无效打印语句
我该如何决定关闭所有这些打印?
我不问如何打印这些线路到文件,但完全忽略它
我使用内部库打印很多(一个脚本总共可打印40000行),并且我认为它可能对性能造成不良影响。这是由我公司的另一个团队开发的一个库,并进行了大量计算,它们打印以调试错误(并且我知道这不是一个好习惯,但由于生产中已有100个脚本,所以太晚了) 和我开发一个使用100个脚本来产生结果的脚本。python中的无效打印语句
我该如何决定关闭所有这些打印?
我不问如何打印这些线路到文件,但完全忽略它
替换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
,最好的办法是简单地删除打印报表,因为那里 没有任何开销。
或者,您可以将输出重定向到/dev/null
,这将使 有效地消除I/O开销,但不会删除系统调用。
为了节省系统调用,您可以用一个不做任何事情的Writer替换sys.stdout
。 例如:
class NullWriter():
def write(self, s): pass
sys.stdout = NullWriter()
在你使用Python 3的情况下,你可以重载print
功能 看到in this answer:
def print(*args, **kwargs):
pass
嗯...删除'print'报表? – Doorknob
实习生图书馆是什么意思?另外,到40000你的意思是它打印40000次?你能给我们谈论的图书馆提供一个特定的链接吗?请让你的问题更清楚,以便我们能够帮助你。 – tatsuhirosatou
您是否检查过这个内部函数库是否可以与各种级别的消息“冗长”一起使用?另外你到目前为止尝试了什么? –