23. 协程
首先我们先来回顾下生成器的创建过程。我们可以这样去创建一个生成器:
这样做不仅快而且不会给内存带来压力,因为我们所需要的值都是动态生成的而不是将他们存储在一个列表中。更概括的说如果现在我们在上面的例子中使用yield
便可获得了一个协程。协程会消费掉发送给它的值。Python实现的grep
就是个很好的例子:
发送的值会被yield
接收。我们为什么要运行next()
方法呢?这样做正是为了启动一个协程。就像协程中包含的生成器并不是立刻执行,而是通过next()
方法来响应方法。因此,你必须通过next()
方法来执行yield
表达式。
更多协程相关知识的学习大家可以参考David Beazley的这份精彩演讲。