假设我有两个迭代器,我想计算
fancyoperation1(iter1), fancyoperation2(iter2)
通常,我只使用fancyoperation1(iter1), fancyoperation2(iter2)
。但是,如果这些迭代器链接到单个源,可能是来自单个迭代器的tee
d,那么如果不在内存中保留大量临时数据,我就无法做到这一点。在这种情况下,我知道有几种选择:
fancyoperation1
和{不过,我不太喜欢这些选择的缺点。有没有一种方法可以在一个线程中完成我想做的事情,而不重写内容或使用大量内存?我试图用协同程序来实现,但是Python的yield
似乎不够强大。在
(我目前没有这个问题,但我想知道如果有问题该怎么办。)
您完全可以使用协同程序来实现这一点,只是稍微不太方便(但从好的方面看,您可以将它们分开,并且可以让大多数代码保持不变)。将花哨的操作更改为无参数,并重复使用
yield
(as expression)来获取数据,而不是接受参数并对其进行迭代。换言之,改变这一点:当然,如果不需要进行迭代后的清理,那么就更容易了。 您可以这样使用(假设
^{pr2}$iter1, iter2 = tee(underlying_iter)
):相关问题 更多 >
编程相关推荐