En Thu, 06 Aug 2009 09:00:45 -0300, Doron Tal <doron.tal.l...@gmail.com>
escribió:
I use inspect.stack() to extract some info, such as file name, function
name
and line number, for the sake of logging (home brew logger).
I tested to see how much time it takes to execute the command:
Python 2.4.3 (#1, Jan 21 2009, 01:11:33)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import timeit
t = timeit.Timer('inspect.stack()', 'import inspect')
t.repeat(3,1000)
[0.28500604629516602, 0.28315305709838867, 0.29169297218322754]
About 280uSec per call.
If I log 1000 times per seconds than I get to spend 28% of the process
time
on inspect.stack()
Is there a better/quicker way of retrieving the same info?
inspect loads the whole source code of every module in the stack (using
linecache). If all you want is module name + line number, use this:
f = sys._getframe()
print f.f_globals['__name__'], f.f_lineno
(see a recent post about warnings.warn too)
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list