擅长:python、mysql、java
<p>这里有一个根本的问题。假设您得到了两个迭代器<code>iter1</code>和<code>iter2</code>,然后将<code>iter1</code>传递给一个函数,该函数会吃掉整个内容:</p>
<pre><code>def consume(iterable):
for thing in iterable:
do_stuff_with(thing)
consume(iter1)
</code></pre>
<p>这需要遍历所有<code>tuple_gen</code>来获得第一个项目,然后如何处理第二个项目?除非您可以重新运行生成器以再次获取第二个项目,否则您需要将所有这些项目存储在内存中,除非您可以将它们持久化到磁盘或其他东西中,因此,与将<code>tuple_gen</code>转储到列表中相比,这样做的好处并不多。在</p>
<hr/>
<p>如果您这样做,您必须并行使用迭代器,或者运行底层生成器两次,或者花费大量内存来保存未处理的元组元素,以便其他迭代器可以遍历它们。不幸的是,并行使用迭代器将需要重写使用者函数或在单独的线程中运行它们。如果可以的话,运行生成器两次是最简单的,但并不总是一个选项。在</p>