嵌套函数内的 cProfile

Posted

技术标签:

【中文标题】嵌套函数内的 cProfile【英文标题】:cProfile inside a nested function 【发布时间】:2018-06-25 17:59:36 【问题描述】:

我正在尝试使用 cProfile.run 分析嵌套函数。我知道cProfile 可能与我调用它的范围不同,但我不太确定实现这一目标的惯用方法是什么。这是一个 MVCE:

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

给出错误:

NameError: name 'bar' is not defined

【问题讨论】:

【参考方案1】:

使用cProfile.runctx:

def foo():
    def bar():
        # do something here
        return 1
    cProfile.runctx('bar()', None, locals=locals())

【讨论】:

【参考方案2】:

使用 cProfile.run

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

【讨论】:

以上是关于嵌套函数内的 cProfile的主要内容,如果未能解决你的问题,请参考以下文章

使用具有多个参数和索引的lapply / sapply减少函数内的嵌套循环

itertools.product 比嵌套 for 循环慢

在嵌套函数中修改变量顺序

Java嵌套类的作用、用法和调用机制是怎么样的?

十八十九穿插python沉淀之路--嵌套闭包递归,三者的区别

python 函数嵌套 以及 对于多函数共同运行应该注意的点