这几天学习到了协程,说实话真是不太好理解,但是只要坚持看下去, 好像还是可以看明白的.
所以大家不要泄气, 一定要努力想办法慢慢理解.
下面上一个小示例咱们一起研究一下.
![](https://img.haomeiwen.com/i3265625/e1d32a03160bf5d1.png)
执行结果为:
![](https://img.haomeiwen.com/i3265625/97fc0c5325ad05b7.png)
刚开始确实不明白到底是什么意思, 所以就回头重新学习generator(生成器).
果然温故而知新, 再次学习之后了解到了:
next函数与send函数很相似,都能获得生成器的下一个yield后面表达式的值,不同的是send函数可以向生成器传参并且获得yield后面的表达式的值,但是要使用send函数必须先得到generator, 不然会报错
接下来一步一步的学习具体内容:
1, 首先执行 produce方法, 执行c.send(None)获取generator,执行consumer方法到了第4行, 此时传进去一个None, 返回一个""(空字符串),只不过我们没有接受
2, 继续执行while打印 Producing1...
3,执行c.send(n) 此时接着执行consumer方法, 从第4行继续执行,拿到外部传进去的数字n即1, 第7行打印结果 Consuming1... ,继续执行第8行r="200 OK",接下来继续执行while, 再次到了yield, 此时返回r的值为"200 OK",此时来到了produce方法的第17行, 打印获取的r的值 Consumerreturn: 200 OK
4,重复执行步骤2, 3
我刚学习Python没多久, 这是我自己的理解, 如果有不对的地方希望大家指正一起学习.谢谢
网友评论