我使用內部庫打印很多(一個腳本總共可打印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
您是否檢查過這個內部函數庫是否可以與各種級別的消息「冗長」一起使用?另外你到目前爲止嘗試了什麼? –