2017-08-01 33 views
0

我正在使用一個運行了很多小時的腳本,它打印語句以驗證問題是否可能出現(數據從網上下載,有時會變形) 。在Python中清除終端窗口,內存/性能

我注意到一段時間後性能顯着下降。我懷疑成千上萬的印刷聲明可能是原因。

它通常被稱爲終端可以通過下面的代碼行被清除這些打印語句:

import os 
os.system('cls') # for windows 

不過,我懷疑這並不實際上提高性能速度和由於屏幕被清除,這只是一個可以感覺到的改進。這是真的還是不是?

我也認爲抑制與下面的代碼一定print語句:

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

我的問題:我怎樣才能提高我的腳本的性能(速度),因爲我還是想看到最最近的印刷報表?

+2

您可以將輸出記錄到文件中,然後執行tail -f查看輸出流。 –

+1

請修復您的縮進 – marcadian

+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='')