0

大量に出力する内部ライブラリ (1 つのスクリプトで合計 40000 行を出力できます) を使用しており、パフォーマンスに悪影響を与える可能性があると思います。これは私の会社の別のチームによって開発されたライブラリであり、多くの計算を行い、エラーをデバッグするために出力します (これは良い習慣ではないことはわかっていますが、既に 100 個のスクリプトが運用されているため遅すぎます)。 100 個のスクリプトを使用して結果を生成するスクリプト。

このすべての印刷をオフにするにはどうすればよいですか?

これらの行をファイルに出力する方法を尋ねているわけではありませんが、完全に省略しています

4

2 に答える 2

7

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
于 2013-06-27T12:47:27.460 に答える
2

最善の方法は、オーバーヘッドがまったくないため、単純に print ステートメントを削除することです。

または、出力を にリダイレクトすることもでき/dev/nullます。これにより、I/O オーバーヘッドは効果的に除去されますが、syscall は除去されません。

syscall を節約するためsys.stdoutに、何もしない Writer に置き換えることができます。例えば:

class NullWriter():
    def write(self, s): pass

sys.stdout = NullWriter()

どうやら、これは以前に尋ねられ解決されたようです。こちらも。

Python 3 を使用している場合は、この回答printに見られるように関数をオーバーロードできます。

def print(*args, **kwargs):
    pass
于 2013-06-27T12:48:27.040 に答える