作者:禅与计算机程序设计艺术
1.简介
在多线程编程中,当一个线程运行时,其他所有线程都被阻塞。在协同式多任务环境中,则是以某种方式让多个任务并行运行,但是这些任务仍然会共享内存和其他资源。Coroutine是一种用户态轻量级线程,它可以暂停执行后恢复继续执行。因此,coroutine 可以用来进行并发编程,使得程序具有更高的可伸缩性、弹性和易于理解性。Python 提供了对 coroutine 的支持,允许开发者创建协程,以便利用高效率的非阻塞 I/O 操作实现高吞吐量的网络服务。本文主要关注 Python 中 coroutine 的概念和用法,重点阐述其应用场景及优势。
2.基本概念术语说明
2.1 Coroutine
协程是一个轻量级线程,它同样拥有自己的栈(stack),但又与普通线程不同的是,协程调度器可以暂停正在运行的协程并切换到另一个等待状态的协程,从而实现并发处理。在任意时刻只能有一个协程处于运行状态,其他协程都处于等待状态或其他相关状态。协程运行完毕后,它也会销毁自己所占用的资源。通常来说,协程都是定义成不断产出值,或者接收输入并且产生输出的函数,例如生成器。协程非常适合用于需要处理异步事件的应用,尤其是在高并发场景下,如服务器端编程。与线程相比,协程有以下几个特点:
- 更小的栈空间
- 更快的启动时间
- 更高的执行效率
- 更容易创建和控制
2.2 Generators
生成器也是一种 coroutine
来源地址:https://blog.csdn.net/universsky2015/article/details/132033842