python入门20180721-异步编程和事件驱动
同步/异步
同步和异步描述的是进程/线程的调用方式。
1、同步调用指的是线程发起调用后,一直等待调用返回后才继续执行下一步操作,这并不代表CPU在这段时间内也会一直等待,操作系统多半会切换到另一个线程上去,等到调用返回后再切换原来的线程
2、异步就相反,发起调用后,线程继续向下执行,当调用返回后,通过某种手段来通知调用者。
调用返回,指的是内核进程将数据复制到调用进程;
异步编程模型
1、单线程
2、任务交错执行
线程/进程状态模型
阻塞与非阻塞是针对IO状态而言的,关注程序再等待IO调用返回这段时间的状态;
IO编程模型
IO通常有两个阶段:准备数据和返回结果
阻塞IO:线程/进程发出系统调用请求之后,进程就一直等待上述两个阶段完成,等到拿到返回结果之后再运行;
非阻塞IO:发起调用后,如果数据还没有就绪,就马上返回一个结果,告诉进程数据还没有就绪;进程会不断的查询内核状态;
事件驱动模型
asyncio模块
目前用的很少