Python死循环的极限PK,while True和for+ [无限迭代器],谁更猛

欢迎访问Python3分钟系列。花3分钟时间,学习或温习一个Python知识点。

今天在项目中也写了死循环(for循环),导致xxxx(省略100字..),被领导骂了。

然后我一个开发同事就开始和我争,表示他曾写的死循环(while循环)导致的xxxx(省略200字)比我这个猛多了。

我肯定不服啊,表示for+无限迭代器是最猛。640-36

这就引出了今天的讨论主题:while True和for _ in [无限迭代器],谁更猛?

什么是无限迭代器?

无限迭代器是一种特殊的迭代器,它可以产生无限序列的元素。例如,itertools.count会从一个起始值开始,无限地产生连续的整数。

直接上代码吧!

import time

# 测试 while True 循环的性能
start_time = time.time()
counter = 0
while True:
    counter += 1
    if counter >= 10000000:
        break
end_time = time.time()
while_true_duration = end_time - start_time

# 测试 for 循环与无限迭代器的性能
start_time = time.time()
for _ in iter(int, 1):  # 使用 iter 创建一个无限迭代器
    counter -= 1
    if counter <= 0:
        break
end_time = time.time()
for_loop_duration = end_time - start_time

print(f"while True 耗时: {while_true_duration}")
print(f"for loop 耗时: {for_loop_duration}")

代码说明

先通过while True循环计数到10000000次来测量执行时间。

接着,使用iter(int, 1)创建一个无限迭代器,在for循环中进行相反的计数操作直到计数器归零,同样测量执行时间。

代码运行结果

循环10,000,000次

while True 耗时: 0.5636961460113525
for loop 耗时: 0.816516637802124

循环100,000,000次

while True 耗时: 5.133043527603149
for loop 耗时: 9.265887975692749

为什么for+[无限迭代器]会执行更慢?

  1. 迭代器开销:在for循环中,使用iter(int, 1)创建的无限迭代器可能引入了额外的开销。每次迭代时,它都需要调用int函数和进行条件判断,这些都会增加执行时间。
  2. 循环结构差异:while True循环是Python中最基本的循环结构,可能比涉及函数调用的for循环更直接和高效。
  3. Python解释器优化:Python的解释器可能对while True这样的简单循环进行了特定的优化,使其执行更快。
原文链接:https://www.zsiss.com/10089.html,转载请注明出处。
0

评论0

请先
响应式模板下载网站模板ZY31674
响应式模板下载网站模板ZY31674
5分钟前 有人购买 去瞅瞅看

社交账号快速登录