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