为什么在函数中运行Python代码更快?
发现如果Python代码通常运行,然后如果在Python函数中运行,它在后一种情况下运行得更快。我想知道为什么Python代码在函数中运行得更快。
通常发现在Python函数中存储本地变量比全局变量更快。这可以解释如下。
除了本地/全局变量存储时间外,操作码预测也使函数更快。
CPython是我们从Python.org下载的最初的Python实现。它被称为CPython,以区分它和后来的Python实现,并将语言引擎的实现与Python编程语言本身区分开来。
CPython碰巧是用C语言实现的。CPython将我们的Python代码编译成字节码,然后在评估循环中解释该字节码。
当编译函数时,本地变量存储在固定大小的数组(而不是字典)中,并且变量名分配给索引。这是可能的,因为您无法在函数中动态添加本地变量。然后,检索本地变量实际上是指向列表的指针查找和PyObject的refcount增加,这是微不足道的。
将此与全局查找进行比较,全局查找涉及哈希等真实的字典搜索。顺便说一句,这就是为什么您需要指定全局变量的原因:如果您在作用域内分配给变量,则编译器将为其访问发出STORE_FASTs,除非您告诉它不要这样做。
顺便说一下,全局查找仍然相当优化。属性查找是真正的缓慢的访问之一!
阅读更多:Python 教程
极客教程