协程

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

生成器:

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("")

原文地址:https://www.cnblogs.com/wsnan/p/11735760.html