python aimport asyncio
asyncio:不能提升运算速度,主要能提升网络等待,网络通讯时间
就是一个event loop ,需要你告诉他,什么时候开始,什么时候结束,不存在竞争冒险问题。
coroutine function
coroutine object
所有async 的函数(coroutine function),返回的都是coroutine object,不会运行coroutine function里面的代码
如何运行coroutine function代码?
需要两步
需要进入async 模式
只有一种方式asyncio.run(coroutine),参数为一个coroutine;会做两件事,第一会建立event loop
第二会把coroutine变成event loop里面第一个task
把coroutine 变成task
第一个方法await:使用await变成一个task,把控制权交出去,需要等,拿task返回值
第二个方法creat_task:把coroutine 变成task,并且把task注册到event loop里面
如果await 后面是一个coroutine,就会把coroutine变成task;
如果await后面是一个task就会,就会告诉event loop 我需要这个task完成,我把控制权给你,让task完成,把返回值给我,必须用await才能拿到值!
解决网络通讯问题。
gather函数,参数是若干个coroutine或task,如果是coroutine会把他变成task注册到event loop里面 ,会返回一个future值
coroutine只有变成task,才能被执行
如果代码里面没有等待或者io操作的话,协程对代码是没有帮助的
syncio的理解