我使用的脚本运行了很长时间,打印语句以验证是否可能出现问题(数据是从网上下载的,有时会失真)。
我注意到一段时间后性能显着下降。我怀疑可能是成千上万行的打印陈述。
众所周知,终端可以通过以下代码行清除这些打印语句:
import os
os.system('cls') # for windows
尽管如此,我怀疑这并没有实际提高性能速度,而且由于屏幕被清除,它仅仅是感知到的改进。这是真的吗?
我还考虑使用以下代码来抑制某些打印语句:
import sys
class NullWriter(object):
def write(self, arg):
pass
nullwrite = NullWriter()
oldstdout = sys.stdout
sys.stdout = oldstdout # enable output
print("text that I want to see")
sys.stdout = nullwrite # disable output
print("text I don't want to see")
我的问题:我如何才能提高脚本的性能(速度),因为我仍然希望看到最新的打印语句?
答案 0 :(得分:0)
如果您愿意,您可以在没有回车的情况下进行换行并覆盖最后一行:
sys.stdout.write("\rDoing things")
sys.stdout.flush()
随着时间的推移打印不应该在python中使用任何额外的内存,但是您可能将终端的缓冲区设置为高,这可能会占用大量内存。或者它只是花时间来刷新缓冲区,因为你对stdout写得这么快。
您也可以使用打印功能
从Python 2.6中,您可以从Python 3导入打印功能:
from __future__ import print_function
这允许您使用下面的Python 3解决方案。
在Python 3中,print语句已更改为函数。在Python 3中,您可以改为:
print('.', end='')