一般来说,将数据获取(可能很复杂)与消费分开。特别地:
-
要连接多个B树查询的结果,db部分将生成并执行查询
yield
-通过记录,消费者只看到单个数据项到达。
-
缓冲(预读)-生成器获取块中的数据,并从每个块生成单个元素。同样,消费者与血淋淋的细节是分开的。
发电机也可以作为协同工作。你可以传递数据
进入之内
他们使用
nextval=g.next(data)
在“消费者”方面,
data = yield(nextval)
在发电机侧。在这种情况下,发电机及其用户的“交换”值。你甚至可以
产量
在生成器上下文中引发异常:
g.throw(exc)
就是这样。