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

Reply via email to