私のPythonコードは、たとえば次のように(デバッグ|プロファイリング|トレースなど)に使用される多くの関数呼び出しとインターレースされています。
import logging
logging.root.setLevel(logging.DEBUG)
logging.debug('hello')
j = 0
for i in range(10):
j += i
logging.debug('i %d j %d' % (i,j))
print(j)
logging.debug('bye')
これらのリソースを消費する関数をコードから#defineしたいと思います。c相当のようなもの
#define logging.debug(val)
はい、ログモジュールのログレベルメカニズムを使用して、設定されたログレベルより下のログをマスクできることを知っています。しかし、Pythonインタープリターに関数をスキップさせる一般的な方法を求めています(あまり実行しない場合でも実行に時間がかかります)
1つのアイデアは、コメントアウトしたい関数を空の関数に再定義することです。
def lazy(*args): pass
logging.debug = lazy
上記のアイデアはまだ関数を呼び出しており、他の無数の問題を引き起こす可能性があります