如何克隆Python生成器对象?


问题内容

考虑这种情况:

#!/ usr / bin / env python
#-*-编码:utf-8-*-
导入操作系统

walk = os.walk('/ home')

用于root,dirs,walk文件:
    用于目录+文件中的路径名:
        打印os.path.join(root,pathname)

用于root,dirs,walk文件:
    用于目录+文件中的路径名:
        打印os.path.join(root,pathname)

我知道这个示例有点多余,但是您应该考虑到我们需要walk多次使用相同的数据。我有一个基准测试场景,必须使用相同的walk数据才能获得有用的结果。

我尝试walk2 = walk克隆并在第二次迭代中使用,但是没有用。问题是…我该如何复制?有可能吗?

先感谢您。


问题答案:

您可以使用itertools.tee()

walk, walk2 = itertools.tee(walk)

请注意,正如文档指出的那样,这可能“需要大量额外的存储空间”。