缓存生成器的结果并重用它们
reusegen的Python项目详细描述
Reusegen
迭代期间生成器已耗尽:
xs=(x*xforxinrange(10))ys=[x+1forxinxs]# [1, 2, ...]zs=[x+2forxinxs]# []
有时这是不可能的。使用ReuseGen,您可以重用列表等生成器:
fromreusegenimportreusexs=reuse(x*xforxinrange(10))ys=[x+1forxinxs]zs=[x+1forxinxs]print(ys==zs)# True
它还可以充当装饰器:
@reusedefdouble(xs):forxinxs:yieldx*2
默认情况下,生成器的结果被缓存。您可以使其无缓存以将内存保存为原始生成器:
xs=reuse(x*xforxinrange(10),cache=False)
生成器将执行多次。
待办事项
添加reuse
的无缓存版本。