参考视频:02 协程_哔哩哔哩_bilibili
1.协程:(不是计算机中真实存在的,人为创造出的概念),也可称为微线程。
本质是用一个线程在一段代码中来会切换游走的线程,是一种用户态内的上下文切换技术。
2.python实现协程的几种方法:
greenlet,早期模块
yield关键字
asyncio装饰器(python3.4后支持的)
async、await关键字(python3.5后支持)推荐使用
3.示例
如果一个函数内部使用yield函数,认为他是一个生成器函数。
①通过yield关键字实现协程
②asyncio模块
在python3.4之后的版本支持(普通函数加上装饰器就是协程函数。)
定义两个协程函数,将两个协程函数放到一个task列表,将task列表放到事件循环。
当一个线程在执行他的协程函数时,如果遇到yiled from asyncio的情况,他不会在这一直等待,在等待的过程中会切换到其他的协程函数。
asyncio遇到io阻塞时会自动切换。
③ python3.5 后引入async 和 await关键字。
③的功能与②相同,但是新的版本中,可以不用装饰器,直接使用asyncio关键字,yield from也可以使用await做替换。