什么是协程?
协程,本质上还是单进程单线程运行的程序,并不能提升运算速度,但是适用于网络通讯,因为网络通讯中,经常会碰到等待的情况。
asyncio
看下面一段代码:
import asyncio
async def main():
print('hello')
await asyncio.sleep(1)
print('world')
coro = main()
asyncio.run(main())
- event_loop:核心组件,相当于一个大脑,他来决定该执行哪个任务。就像上面说到的,同时执行的任务只能有一个,不存在系统级的上下文切换。
- task:event_loop来执行
- coroutine:分为coroutine function、coroutine object:
上面的main函数就是一个coroutine function,由async修饰。不像其他函数,这个被async修饰的函数,被调用的时候返回的是一个coroutine object,也就是coro变量是一个coroutine function,执行coro赋值,并不会打印“hello world”。 那我们要怎么运行coroutine object呢?上面的代码中,asyncio.run(main())