Browse Source

util.profiler: prepend class name to prints

3.2.x
SomberNight 7 years ago
parent
commit
6192bfce46
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 19
      electrum/util.py

19
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():

Loading…
Cancel
Save