首页  >  文章  >  后端开发  >  能否让 Python 生成器对象焕然一新以供重用?

能否让 Python 生成器对象焕然一新以供重用?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-02 13:52:02311浏览

Can You Rejuvenate a Python Generator Object for Reuse?

在 Python 中恢复生成器对象

遇到生成多个值的生成器对象,您可能会寻求恢复它以供重用。这种追求源于避免与生成器创建相关的耗时准备工作的愿望。

不幸的是,与衔尾蛇不同,生成器无法自我再生。然而,有几种策略可以提供喘息的机会:

选项 1:复活生成器

像凤凰一样,您可以通过再次调用其父函数来复活生成器:

<code class="python">y = FunctionWithYield()
for x in y: print(x)
y = FunctionWithYield()
for x in y: print(x)</code>

这种方法确保了新的计算,但代价是重复昂贵的准备步骤。

选项 2:拥抱保存

拥抱保存,您可以将生成器的结果存储在允许多次迭代的数据结构中:

<code class="python">y = list(FunctionWithYield())
for x in y: print(x)
# Can iterate again:
for x in y: print(x)</code>

虽然此方法可以防止重复计算,但它会产生存储开销。

平衡内存和处理

这些选项之间的选择呈现了内存之间的经典权衡和加工。选项 1 牺牲了处理时间,而选项 2 增加了内存负担。

额外的见解

尽管 tee 正如其他人所建议的那样,提供了类似于内存缓冲的功能,但它仍然会产生相同的存储开销和性能特征作为选项 2。

以上是能否让 Python 生成器对象焕然一新以供重用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn