使用协程也就意味着你需要一直写异步方法。在 Python 中我们使用 asyncio 模块来实现一个协程。如果我们把 Python 中普通函数称之为同步函数(方法),那么用协程定义的函数我们称之为异步函数(方法)。
- 同步函数定义和调用:
def function(x):
return 2 * x
if __name__ == '__main__':
function(2)
- 异步函数定义和调用:
import asyncio
async def function(x):
return 2 * x
if __name__ == '__main__':
t=function(2)
asyncio.run(t)
注意:主函数里面调用时它是异步协程函数.,此时函数执行得到的是一个协程对象,因此不能在主函数中直接运行,会抛出Error,必须借助asyncio的run函数才能运行。
- 多个异步函数调佣
import asyncio
async def function1(x):
return 2 * x
async def function2(x):
return x*x
async def main():
tasks=[
asyncio.create_task(function1(2)), # 版本3.8以后加上asyncio.create_task()
asyncio.create_task(function2(3)),
]
if __name__ == '__main__':
# 一次性启动多个任务(协程)
asyncio.run(main())
关键字await 的作用
- 它要用于异步函数内部,await 用于需要等待的地方(比如网络 IO),出现 await 的时候,asyncio 去调度,在不同的 task 里面切换。
- await 的作用就是等待当前的协程运行结束之后再继续进行下面代码。等待一个协程的执行完毕,如果有返回结果,那么就会接收到协程的返回结果,通过使用 return 可以返回协程的一个结果,这个和同步函数的 return 使用方法一样。