python - 嵌套函数的性能开销是多少?

标签 python performance function

<分区>

在 Python 中,可以像这样嵌套函数:

def do_something():
    def helper():
        ....
    ....

除非 Python 更巧妙地处理这种情况,否则每次使用 do_something 时都必须重新创建 helper。这样做实际上会影响性能而不是在主函数之外创建辅助函数吗?如果是,它有多好?

最佳答案

是的,在 main 函数中声明一个 helper 比单独声明它们慢:

### test_nested.py ###
import timeit
def foo():
    def bar():
        pass
    pass
print(timeit.timeit("foo()", setup="from __main__ import foo"))

### test_flat.py ###
import timeit
def foo():
    pass
def bar():
    pass
print(timeit.timeit("foo()", setup="from __main__ import foo, bar"))


### Shell ###
✗ python3 ./test_flat.py
0.42562198638916016
✗ python3 ./test_nested.py
0.5836758613586426

这是大约 30% 的减速。请记住,在这种微不足道的情况下,创建和调用函数是解释器所做的全部工作。在任何实际使用中,差异都会小得多。

关于python - 嵌套函数的性能开销是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14055843/

相关文章:

c# - 使用单一方法返回不同类型的数据

python - 为什么扩展切片分配不如常规切片分配灵活?

python - 无法通过请求获取过去的分页

mysql - 多次执行 mysql "in"的最佳方法

python - 有什么办法可以加快导入速度吗?

javascript - JS 模块模式 = 缓存/更好的性能?

c++ - 为什么编译器不显示这些返回类型的错误?

python - 另一个函数定义中的函数定义 - 慢?

python - Python 中的二维动画

python - 了解 PyTorch DataLoader Workers 的内存使用情况