如何使用 Python 让循环跑得更快?


这是一个与语言无关的问题。几乎每种语言中都有循环,并且相同的原则普遍适用。你需要意识到,在循环优化方面,编译器会完成大部分繁重的工作,但作为一名程序员,你也需要使循环得到优化。

认识到每次循环迭代都会执行放入循环中的所有内容非常重要。优化循环的关键是将它们所做的内容最小化。即使表面上看起来非常快速的运算,如果重复多次,也会花费很长时间。执行一次需要 1 微秒的运算,一百万次将花费 1 秒才能完成。

不要在循环中或甚至在循环的起始条件中执行类似 len(list) 之类的内容。

示例

a = [i for i in range(1000000)]
length = len(a)
for i in a:
   print(i - length)

比以下循环快得多

a = [i for i in range(1000000)]
for i in a:
   print(i - len(a))

你还可以使用诸如循环展开 (https://en.wikipedia.org/wiki/Loop_unrolling) 的技术,这是一种循环转换技术,试图以牺牲二进制大小为代价优化程序的执行速度,这种方法称为空间时间权衡。

使用诸如 map、filter 等函数来替代明确的 for 循环,也可以提供一些性能提升。

更新日期:2020 年 3 月 5 日

890 次浏览

开启您的 职业

通过完成课程获得认证

立即开始
广告