python 协程

个人理解,以作记录

coroutine :  就是指在一个线程里面执行多个方法(或多段代码), 如方法m1 , m2 , m3 .. 

tasks=[m1(), m2(), m3()]
loop.run_until_complete(asyncio.wait(tasks)).

那么这个线程就会先去 执行 m3,  如果 m3  方法中包含耗时的操作(即await 修饰的代码 ), 那么这个时候线程不会等待该耗时操作完成,而是转而去执行m2 , m1 .. 执行完成后,

然后才去继续执行m1 剩下的代码。。

那么这么做的好处是什么呢?

简单来说就是避免耗时比较长的io操作占用 线程资源。  相当于我们给一个线程三个任务,在执行一个任务的时候,我们发现有个操作并不需要线程参与,但是时间又很长,

那我不想等,怎么办? 我不等了,我去做其他事情了。等我把其他做完了,在回来做这个事。

类似java 主子线程,但好像区别还蛮大的,java多线程调度是穿插执行的,没有固定顺序,子线程并不会等主线程执行完成。

原文地址:https://www.cnblogs.com/zhangchenglzhao/p/9732737.html