import time
def func():
    print('kk')
    time.sleep(3)
    print('kk')
func()

在该程序中,我们的 func () 实际在执⾏的时候⾄少需要 3 秒的时间来完成操作。中间的三秒钟需要让我当前的线程处于阻塞状态。阻塞状态的线程 CPU 是不会来执⾏你的。那么此时 cpu 很可能会切换到其他程序上去执行。此时,对于你来说,CPU 其实并没有为你工作 (在这三秒内), 那么我们能不能通过某种手段,让 CPU 一直为我而工作。尽量的不要去管其他人.

我们要知道 CPU 一般抛开执行周期不谈,如果一个线程遇到了 IO 操作,CPU 就会自动的切换到其他线程进行执行。那么,如果我想办法让我的线程遇到了 IO 操作就挂起,留下的都是运算操作。那 CPU 是不是就会长时间的来照顾我~.

以此为目的,伟大的程序员就发明了一个新的执行过程。当线程中遇到了 IO 操作的时候,将线程中的任务进行切换,切换成非 IO 操作。等原来的 IO 执行完了。再恢复回原来的任务中.

1662799202807

就形成了这样⼀种模型,在程序遇到了 IO 操作 (费时不费⼒的操作) 时,自动切换到其他任务。该模型被称为协程.