美文网首页
tornado协程的工作原理

tornado协程的工作原理

作者: 神韵Lucas | 来源:发表于2019-01-04 16:27 被阅读0次

包含yield语句的函数是一个生成器。所有的生成器都是异步的。当我们调用生成器函数的时候,生成器函数返回一个生成器对象,而不是像普通函数那样直接执行完成。@gen.coroutine装饰器通过yield表达式来和生成器对象交互,调用@gen.coroutine装饰的函数会返回一个Future.

coroutine装饰器内部循环的简化实现

可以看到,coroutine装饰器内部有一个Runner对象,这个对象将我们的生成器函数包装为self.gen.
这个对象就是协程的运行体,它会在内部一直循环运行生成器,直到生成器函数阻塞返回一个Future或者结束。如果遇到yield返回的Future,便通过Future对象的结束回调函数来继续运行生成器函数。
具体实现是:

  • 当生成器函数运行到yield时,会得到一个Future.为这个Future添加结束回调通知函数callback.执行体释放执行权给ioLoop继续执行其它协程。
  • 当这个Future异步运行结束时,会调用callback函数。callback函数得到Future的运行结果,并将结果通过生成器的send方法发送给生成器。这样生成器函数就会在yield的地方返回Future的异步执行结果并继续运行。
  • 接着生成器函数继续运行,直到生成器函数运行结束
  • 或者遇到下一个yield转到步骤1

相关文章

  • tornado协程的工作原理

    包含yield语句的函数是一个生成器。所有的生成器都是异步的。当我们调用生成器函数的时候,生成器函数返回一个生成器...

  • (2018-05-30.Python从Zero到One)8、(T

    7.4 练习 请解释清同步、异步、yield、协程几个概念和Tornado实现异步的原理。 练习使用Tornado...

  • Tornado协程原理

    协程的定义 函数入口:有且只有一个入口出口:有且只有一个出口 协程入口:多个入口出口:多个出口特点:暂定,保留执行...

  • 如何分析tornado源码和调试跟踪

    “协程”“异步”“一个tornado可以并发处理几万长连接”“tornado和gevent是两种不同的协程方式” ...

  • python tornado TCPserver异步协程实例

    项目所用知识点 tornado socket tcpserver 协程 异步 tornado tcpserver源...

  • Tornado 异步协程coroutine原理

    协程定义: 协程,又称微线程,纤程。英文名Coroutine。 子程序,或者称为函数,在所有语言中都是层级调用,比...

  • Tornado入门(三)【协程】

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

  • base learn

    多线程,多进程,协程 huey,celery,redis,memcached tornado,middleware...

  • tornado协程调度

    环境配置 win10pycharm64 5.0.3python 3.6.7tornado 5.1.1 示例代码 参...

  • Kotlin协程之再次读懂协程工作原理

    概述 关于协程的创建,以及挂起和恢复,之前有写过一篇文章 Kotlin协程之深入理解协程工作原理[https://...

网友评论

      本文标题:tornado协程的工作原理

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