我有一个由多个产量返回的生成器对象。准备调用这个生成器是相当耗时的操作。这就是为什么我想多次重用生成器。
y = FunctionWithYield() for x in y: print(x) #here must be something to reset 'y' for x in y: print(x)
当然,我正在考虑将内容复制到简单列表中。有没有办法重置我的发电机?
另一种选择是使用该itertools.tee()函数创建生成器的第二个版本:
itertools.tee()
import itertools y = FunctionWithYield() y, y_backup = itertools.tee(y) for x in y: print(x) for x in y_backup: print(x)
如果原始迭代可能无法处理所有项目,则从内存使用的角度来看,这可能是有益的。