清除Python中的终端窗口,内存/性能

时间:2017-08-01 21:04:55

标签: python stdout

我使用的脚本运行了很长时间,打印语句以验证是否可能出现问题(数据是从网上下载的,有时会失真)。

我注意到一段时间后性能显着下降。我怀疑可能是成千上万行的打印陈述。

众所周知,终端可以通过以下代码行清除这些打印语句:

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")

我的问题:我如何才能提高脚本的性能(速度),因为我仍然希望看到最新的打印语句?

1 个答案:

答案 0 :(得分:0)

如果您愿意,您可以在没有回车的情况下进行换行并覆盖最后一行:

sys.stdout.write("\rDoing things")
sys.stdout.flush()

随着时间的推移打印不应该在python中使用任何额外的内存,但是您可能将终端的缓冲区设置为高,这可能会占用大量内存。或者它只是花时间来刷新缓冲区,因为你对stdout写得这么快。

您也可以使用打印功能

Python 2.6 +

从Python 2.6中,您可以从Python 3导入打印功能:

from __future__ import print_function

这允许您使用下面的Python 3解决方案。

Python 3

在Python 3中,print语句已更改为函数。在Python 3中,您可以改为:

print('.', end='')