tutil.profiler: prepend class name to prints - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 6192bfce463fbd05e3ccdc851aab24a994a7258c DIR parent 194ee395e70ad44d19732acd69fe8eec2693f968 HTML Author: SomberNight <somber.night@protonmail.com> Date: Thu, 2 Aug 2018 15:38:01 +0200 util.profiler: prepend class name to prints Diffstat: M electrum/util.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) --- DIR diff --git a/electrum/util.py b/electrum/util.py t@@ -32,6 +32,7 @@ import urllib import threading import hmac import stat +import inspect from .i18n import _ t@@ -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():