缓存生成器的结果并重用它们

reusegen的Python项目详细描述


Reusegen

PyPITravis (.org)

迭代期间生成器已耗尽:

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的无缓存版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Android的Rest服务中传递列表<Integer>对象和字符串   java Hibernate集合初始化问题   java用ByteBuddy定义一个方法、调用、拦截器和委托给目标?   java递归对象删除   java用标签填充GridPane   java使用ApachePOI在word文档中添加水印   java如何可视化地使用在NetBeans中扩展组件的类?   javascript如何在java web应用程序中刷新页面后保留选中的单选按钮   在Java中,小程序试图使用MouseListener绘制矩形会导致程序崩溃,而不会生成异常   java如何在子注释上下文中使用spring属性源?   当应用到FactoryBean时,java会执行Spring的@Lazy工作吗?   java验证二进制代码和无无限循环的重复程序   java如何将ArgumentCaptor与Mockito一起使用。when()。然后返回()   使用JPA为视图定义DTO和存储库的java问题