From 257ee10967ab61d497cd207ed38b3fcd564bb79c Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 12 Feb 2018 09:07:05 +0000 Subject: log: Use sys._getframe() to avoid stat(2) calls The Osmo MS driver is launching many many processes and I would like to use the logging framework for the code as well. Unfortunately the inspect/traceback code will use a linecache which will execute stat(2) on one or more python files. Related: OS#2927 Change-Id: I8f6bacadcf74d3aa25db1e1f41644f64aa19cf92 --- src/osmo_gsm_tester/log.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/osmo_gsm_tester/log.py') diff --git a/src/osmo_gsm_tester/log.py b/src/osmo_gsm_tester/log.py index a9f16c2..7c4ae44 100644 --- a/src/osmo_gsm_tester/log.py +++ b/src/osmo_gsm_tester/log.py @@ -275,8 +275,10 @@ def large_separator(*msgs, sublevel=1, space_above=True): target.large_separator(*msgs, sublevel=sublevel, space_above=space_above) def get_src_from_caller(levels_up=1): - caller = getframeinfo(stack()[levels_up][0]) - return '%s:%d' % (os.path.basename(caller.filename), caller.lineno) + # Poke into internal to avoid hitting the linecache which will make one or + # more calls to stat(2). + frame = sys._getframe(levels_up) + return '%s:%d' % (os.path.basename(frame.f_code.co_filename), frame.f_lineno) def get_src_from_exc_info(exc_info=None, levels_up=1): if exc_info is None: -- cgit v1.2.3