协程的概念
Python程序在执行IO操作(或者sleep操作)时,必须等待完成才能接着执行下面的程序。显然这样不够高效。于是Python引入了协程,使程序在IO操作时,先运行其它程序,当IO操作完成以后再接着运行下面的程序。
协程是运行的单线程,只是子任务的切换。减少了进程切换的开销,大大提高了执行效率。
协程函数的语法
Python在3.5版本中引入了关于协程的语法糖async和await。
声明协程
将普通函数前面加关键词async,就成了异步函数(协程函数)。
1 | async func(): |
调用协程
直接调用异步函数不会返回结果,而是返回一个coroutine对象:
1 | print(func()) |
我们用asyncio来调用协程
1 | import asyncio |
在协程函数中,可以通过wait来挂起异步操作:
1 | async func(): |
要注意的是,await只能出现在async修饰的函数中。
如果有多个协程,可以通过 asyncio.wait
批量调用
1 | async def fun1(): |