commit 6192bfce463fbd05e3ccdc851aab24a994a7258c
parent 194ee395e70ad44d19732acd69fe8eec2693f968
Author: SomberNight <somber.night@protonmail.com>
Date: Thu, 2 Aug 2018 15:38:01 +0200
util.profiler: prepend class name to prints
Diffstat:
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/electrum/util.py b/electrum/util.py
@@ -32,6 +32,7 @@ import urllib
import threading
import hmac
import stat
+import inspect
from .i18n import _
@@ -310,14 +311,24 @@ def constant_time_compare(val1, val2):
# decorator that prints execution time
def profiler(func):
- def do_profile(func, args, kw_args):
- n = func.__name__
+ def get_func_name(args):
+ arg_names_from_sig = inspect.getfullargspec(func).args
+ # prepend class name if there is one (and if we can find it)
+ if len(arg_names_from_sig) > 0 and len(args) > 0 \
+ and arg_names_from_sig[0] in ('self', 'cls', 'klass'):
+ classname = args[0].__class__.__name__
+ else:
+ classname = ''
+ name = '{}.{}'.format(classname, func.__name__) if classname else func.__name__
+ return name
+ def do_profile(args, kw_args):
+ name = get_func_name(args)
t0 = time.time()
o = func(*args, **kw_args)
t = time.time() - t0
- print_error("[profiler]", n, "%.4f"%t)
+ print_error("[profiler]", name, "%.4f"%t)
return o
- return lambda *args, **kw_args: do_profile(func, args, kw_args)
+ return lambda *args, **kw_args: do_profile(args, kw_args)
def android_ext_dir():