私は@classmethod
の基底クラスを持ち、多くの子孫クラスで多数のメソッドのデコレータとして機能します。プロファイルの視覚化を隠すPython cProfile - 装飾された関数
class BaseClass():
@classmethod
def some_decorator(cls, method):
@wraps(method)
def inner_method(self, *args, **kwargs):
# do stuff
return method(self, *args, **kwargs)
return inner_method
class ChildClass(BaseClass):
@BaseClass.some_decorator
def some_child_method(self):
# do other stuff
return
私はこのコードをプロファイリングし、ツリービューを介してそれを見たとき、私は別の場所の数百からsome_decorator
への呼び出しの数千人を参照してください。
そして、私はsome_decorator
が何百もの場所から戻ってくるのを見ています。
これはかなり面倒なことですが、コードを変更したり別の方法でプロファイリングしたりすることなく、私はまだそれを回避する方法を見つけ出していません。 (gprof2dot atmを使用して:How can you get the call tree with python profilers?)
思考?
を、あなたは更新(またはのコピーを作成する)ことができませんでしたコードオブジェクトを編集し、装飾された関数の上の行を参照するようにファイルと行情報を変更しますか? –