我看不见你｡
但我知道你的感受｡
你现在在怀疑我｡
你觉得发电机没用｡
你一直说他们速度快, 性能好, 但我真的不明白｡
这个L关键字和这个next关键字｡
老实说, 这只是｡
这说不通啊.
让我来让你相信他们真正的力量｡
我将选择所有这些并将其删除, 因为我想回到我们之前使用过的一个示例｡
还记得我们创造装饰者表演的时候吗？
在我们的装饰区｡
使用此性能装饰器｡
让我们将其最小化｡
我不得不这样做｡
函数是一个使用范围的长时间函数｡
另一个长时间函数使用一个范围, 然后将其转换为列表｡
所以记住, 一个人创建一个列表｡
然后从我们计算机内存中创建的列表中, 一个接一个地, 乘以5,
而不是一个范围, 这是一个内置在Python中的生成器, 它只需要一个接一个地保存0和内存, 乘以5,
保存一个内存, 但是乘以5, 继续, 继续,
继续, 从内存中删除任何旧的数字｡
您认为这两种产品的性能如何？
让我们来测试一下｡
顺便说一句, 我会链接到这个练习, 这样你就可以自己测试一下｡
所以我们来做长时间｡
然后长时间地｡
下注吧
准备好｡
让我们来看看
第一个函数长时间占用了1｡ 六秒｡
然后第二个函数花了几乎两倍的时间｡
这差别很大吧？
但我们马上就能看出来｡
好吧, 我会的
这绝对是比嗯更有表现力的, 时间也很长｡
让我们再运行一次, 以验证我们的假设｡
请确保它是正确的｡
这次花了1. 8, 然后是2｡ 6.
好吧, 我会的
这要快得多, 尽管它们都做同样的事情｡
想想这个｡
如果你是谷歌, 想想谷歌有多少数据｡
如果你在谷歌工作, 想象一下, 如果这是更大的, 如果这是更长的,
如果你可以执行一个任务快得多｡
使用的资源比谷歌少得多｡
我的意思是, 他们会喜欢你的, 因为有了生成器, 我们就可以不用在内存中保存东西,
不用消耗所有的资源, 而是高效地处理数据｡
看这里
我能在16秒内解出这个函数｡
我的意思是, 是的, 这花了很长时间, 但很长时间, 实际上甚至可以使它杀死的过程｡
如果这是一个谷歌服务器, 这是一个服务器刚刚死亡, 是完全无用的｡
所以生成器在计算大量数据时非常有用, 特别是当我们使用长循环时,
我们并不想存储内存, 也不需要同时计算所有数据, 可能是一个接一个｡
Python中的很多库在底层使用生成器而不是列表, 因为它们要快得多｡
因此, 请记住创建一个生成器｡
我们所要做的就是创建一个我们想要的生成函数｡
然后在这里, 我们可以简单地循环访问某个值｡
也许我们可以给予它一个范围或者我们可以只接受我们的参数｡
我们要做的就是｡
屈服｡
那个结果｡
在这个街区里做我们想做的事｡
但要确保暂停该功能, 以便以后可以使用它｡
作为一个生成器函数, 我们可以用for循环, 在gen函数中输入item, 然后给予它一些参数.