2.协程的应用

2024-07-08 15:06:43 浏览数 (2)

使用协程也就意味着你需要一直写异步方法。在 Python 中我们使用 asyncio 模块来实现一个协程。如果我们把 Python 中普通函数称之为同步函数(方法),那么用协程定义的函数我们称之为异步函数(方法)。

  • 同步函数定义和调用:
代码语言:Python复制
def function(x):
    return 2 * x

if __name__ == '__main__':
    function(2)
  • 异步函数定义和调用:
代码语言:Python复制
import asyncio

async def function(x):
    return 2 * x

if __name__ == '__main__':
    t=function(2)
    asyncio.run(t)

注意:主函数里面调用时它是异步协程函数.,此时函数执行得到的是一个协程对象,因此不能在主函数中直接运行,会抛出Error,必须借助asyncio的run函数才能运行。

  • 多个异步函数调佣
代码语言:Python复制
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 的作用

  1. 它要用于异步函数内部,await 用于需要等待的地方(比如网络 IO),出现 await 的时候,asyncio 去调度,在不同的 task 里面切换。
  2. await 的作用就是等待当前的协程运行结束之后再继续进行下面代码。等待一个协程的执行完毕,如果有返回结果,那么就会接收到协程的返回结果,通过使用 return 可以返回协程的一个结果,这个和同步函数的 return 使用方法一样。

0 人点赞