协程

僤鯓⒐⒋嵵緔 提交于 2019-12-02 07:02:22

协程:非抢占式,由代码控制切换,非操作系统强制控制切换

生成器:

def f():

  print("ok")

  s=yield 6  用于保存并返回当前的执行状态。

  print(s)

  print("ok2")

  yield

gen=f()  函数中加上yield再执行函数,就变成了一个生成器对象,对于生成器,必须调用next()函数才能执行生成器里面的内容,单纯 f()不执行里面的内容,因为此时已经不是一个函数了,变成了生成器,必须调用next()函数

print(gent) ---> <generator object f at    0x000000000000....>,这里返回的是一个生成器的对象

res=next(gen) 这里是生成器对象开始执行,遇到yield就停止,返回yield的值,print(yield)-->返回yield后面的6

程序执行代码 next(gen) 运行结果就是 print("ok")  next()方法让让生成器往下执行了一步,打印出了ok

gen.send(5)  #send()方法 ,也可以跟生成器进行交互 将5赋值给第一个yield,

此时print(s)----->打印的值是5

协程 (coroutine),又叫微线程:l0

def consumer(name):

  print("------>ready to eat baozi")

  baozi = yield

  print("")

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!