今天在項目中也寫了死循環(for循環),導致xxxx(省略100字..),被領導罵了。
然後我一個開發同事就開始和我爭,表示他曾寫的死循環(while循環)導致的xxxx(省略200字)比我這個猛多了。
我肯定不服啊,表示for 無限迭代器是最猛。
![](https://news.xinpengboligang.com/upload/keji/2a1785cedb3ed4311bca9f46be472fe8.jpeg)
這就引出了今天的討論主題: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 [無限迭代器]會執行更慢?
- 迭代器開銷:在for循環中,使用iter(int, 1)創建的無限迭代器可能引入了額外的開銷。每次迭代時,它都需要調用int函數和進行條件判斷,這些都會增加執行時間。
- 循環結構差異:while True循環是Python中最基本的循環結構,可能比涉及函數調用的for循環更直接和高效。
- Python解釋器優化:Python的解釋器可能對while True這樣的簡單循環進行了特定的優化,使其執行更快。
結論
我輸了。