Skip to main content
 首页 » 编程设计

python 生成器太慢而无法使用。我为什么要使用它什么时候

2025年05月04日8soundcode

最近有人问我,iterator、list comprehension、iter(list comprehension) 和 中哪个最快? >发电机。 然后制作如下简单的代码。

n = 1000000 
iter_a = iter(range(n)) 
list_comp_a = [i for i in range(n)] 
iter_list_comp_a = iter([i for i in range(n)]) 
gene_a = (i for i in range(n)) 
 
import time 
import numpy as np 
 
for xs in [iter_a, list_comp_a, iter_list_comp_a, gene_a]: 
    start = time.time() 
    np.sum(xs) 
    end = time.time() 
    print((end-start)*100) 

结果如下。

0.04439353942871094 # iterator 
9.257078170776367 # list_comprehension 
0.006318092346191406 # iterator of list_comprehension 
7.491207122802734 # generator  

发电机比其他东西慢得多。 而且不知道什么时候有用?

请您参考如下方法:

生成器 不会一次性将所有元素存储在内存中。它们一次yield一个,这种行为使它们的内存效率更高。因此,您可以在内存受限时使用它们。