美文网首页
Python: 协程中 yield 执行和返回顺序

Python: 协程中 yield 执行和返回顺序

作者: X4tar | 来源:发表于2020-07-23 23:44 被阅读0次

廖雪峰教程中协程的代码如下:

def consumer():
    r = ''
    while True:
        n = yield r
        if not n:
            return
        print('[CONSUMER] Consuming %s...' % n)
        r = '200 OK'

def produce(c):
    c.send(None)
    n = 0
    while n < 5:
        n = n + 1
        print('[PRODUCER] Producing %s...' % n)
        r = c.send(n)
        print('[PRODUCER] Consumer return: %s' % r)
    c.close()

c = consumer()
produce(c)

c.send(None) consumer() 执行到 yield r ,但是没有对n赋值,属于启动生成器的操作。
c.send(1)时,再将 send的参数传递给n:1。不管 send() 传入 None 还是其他值,都是碰到 yield 立即返回;如果不是启动生成器send(None),则先完成左值赋值(即启动生成器返回后的下一条语句),然后继续运行,直到再次碰到 yield

相关文章

  • Python: 协程中 yield 执行和返回顺序

    廖雪峰教程中协程的代码如下: c.send(None) consumer() 执行到 yield r ,但是没有对...

  • Python协程函数

    在使用装饰器时,在碰到yield时,停止执行,并返回yield的返回值。协程函数可以对yield的返回值进行赋值,...

  • Thread yield 方法

    yield 在其他语言例如 Python 或者 C# 也有协程的概念,在 Java 中 Thread.yield ...

  • Python协程

    目录:一、基于生成器的协程二、协程状态三、协程预激装饰器四、终止协程和异常处理五、协程返回值六、yield fro...

  • 协程

    gevent方法实现多任务(协程) 了解yield和grenlet yield方法创建协程 greenlet方法创建协程

  • Python协程深入理解

    从语法上来看,协程和生成器类似,都是定义体中包含yield关键字的函数。yield在协程中的用法:在协程中yiel...

  • Python协程深入理解

    从语法上来看,协程和生成器类似,都是定义体中包含yield关键字的函数。yield在协程中的用法: 在协程中yie...

  • Tornado入门(三)【协程】

    协程 在Tornado中,协程是推荐使用的异步方式。协程使用yield关键字暂停或者恢复执行,而不是回调链的方式。...

  • Python协程一从generator和yield表达式说起

    Python协程系列(一)——从generator和yield表达式说起 python进阶教程 机器学习 进入正文...

  • Unity截屏

    屏幕截图时需要在协程中执行,且必须有yield return new WaitForEndOfFrame();,否...

网友评论

      本文标题:Python: 协程中 yield 执行和返回顺序

      本文链接:https://www.haomeiwen.com/subject/ewzklktx.html