擅长:python、mysql、java
<p>我能想到三种情况:</p>
<ul>
<li><p>生成器没有副作用,您只希望能够遍历已经捕获的结果。您可以考虑使用<a href="https://stackoverflow.com/questions/19503455/caching-a-generator">cached generator</a>而不是真正的生成器。您还可以共享缓存的生成器,如果有任何客户机走向您尚未访问过的项目,它将前进。这类似于tee()方法,但tee功能是在生成器/缓存本身中执行的,而不是要求客户端执行。</p></li>
<li><p>生成器有副作用,但没有历史记录,您希望能够在任何地方重新启动。考虑将其作为<a href="https://stackoverflow.com/questions/564060/python-generators-and-co-routines">coroutine</a>编写,在这里您可以随时传入要启动的值。</p></li>
<li><p>生成器有副作用和历史记录,这意味着生成器在G(x)处的状态取决于G(x-1)的结果,因此不能只将x传递回它以在任何地方启动。在这种情况下,我认为您需要更具体地说明您要做什么,因为结果不仅取决于生成器,还取决于其他数据的状态。也许,在这种情况下,有更好的方法。</p></li>
</ul>