David Bear wrote:
Is there an easy way to get the current level of recursion? I don't mean
sys.getrecursionlimit. I want to know during a live run of a script how
many times the functions has recursed -- curses, I don't know how to say it
better.
--
David Bear
-- let me buy your intellectual property, I want to own your thoughts --
This might help,
import sys
def getStackDepth():
'''Return the current call stack depth.'''
n = 1
while True:
try:
sys._getframe(n)
except ValueError:
return n - 1
n += 1
def f(n=3):
'''Demo getStackDepth()'''
print 'hi!', n
if n:
return f(n - 1)
else:
return getStackDepth()
This is an evil hack. Never use it.
If you really need to know how many times your function has recursed
pass a counter down the "stack" and increment it every time you
recursively call your function. This will also give you an accurate
count when calling a different function or functions that then
recursively call back into your function, but you'll have to pass your
counter around or *shudder* use a global variable.
def g(n=0):
'''n is the number of recursions...'''
if n < 4:
return g(n + 1)
else:
return n
Peace,
~Simon