Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cProfile inside a nested function

I am trying to profile a nested function using cProfile.run. I understand that perhaps cProfile isn't running at the same scope as where I am calling it, but I'm not quite sure what the idiomatic way to achieve this is. Here's an MVCE:

def foo():
    def bar():
        # do something here
        return 1
    cProfile.run('bar()')

Gives the error:

NameError: name 'bar' is not defined
like image 871
OneRaynyDay Avatar asked Oct 27 '25 09:10

OneRaynyDay


1 Answers

Use cProfile.runctx:

def foo():
    def bar():
        # do something here
        return 1
    cProfile.runctx('bar()', None, locals=locals())
like image 164
MoxieBall Avatar answered Oct 29 '25 00:10

MoxieBall