1.同步(sycn)异步(asycn):
什么是同步,比如这俩人走路很同步?是这样的同步吗? 并不是。
同步 比如五个任务,12345按顺序执行,第一个执行完再执行下一个。一个一个执行。如果第二个任务执行时间慢,后面第三个任务也不会抢先执行。
优点就是井然有序,一一执行。缺点速度没有异步快。
异步:
异步相比同步,他不会向同步一样一一执行,而是哪个任务快直接给后台,再接下一个任务.
缺点:没有顺序,也可能会出现上面代码没执行完下面代码就出来了。
2.并发、并行
并发: 指的是在同一时刻只要能一条指令被执行。如果是多个进程的指令会被快速的轮换执行。从宏观上来看
像是多个进程同时执行的一样。从微观上来看并不是同时执行,把时间分割成多个部分快速的交替执行。
并行:就是多个指令同时被执行。无论是微观还是宏观上看都是同时执行的。
3.进程、线程
进程:
概念:
进程就是在运行中的程序,会占用相对应的内存区域。由cpu执行计算。
多进程适用于 cpu密集型任务 比如大量的计算公式。
线程:
进程就像是一个工厂,而线程就像是工厂的工人,他们干着各种各样的活(电力,资源,材料)等等在相互配合下共同保证 工厂(进程) 正常安稳运转
线程是 操作系统中能运行调度的最小单位,它包含在进程中。
关系:
单线程程序:一个进程有一个线程
多线程程序: 一个进程可以拥有多个线程,多线程可以让同一个进程同时处理多个任务,相当于拓展了进程的功能
状,态:
就绪状态 阻塞状态 执行状态
多线程适用于:io密集型任务 : 比如web开发。
4.GIL 全局解释器锁
GIL 是跟python语言没有关系的,是官方推荐解释器下来的解释器cpython遗留下的问题。
每个线程在执行时会获取 gil 全局解释器锁,在执行完让下一个线程执行,一个一个执行。不会出现一个在gil状态下的程序没执行完 被其他线程枪走。同一刻只能一个程序被执行 。
5.协程
协程又称微线程,协程是存在线程内部中,完全受程序控制所控制,开销小。(时间短)
也称用户级线程, 在单线程请情况下完成多任务,按照顺序交替执行,特点效率极高,由程序控制,线程越多,协程优势越明显。
单线程多协程适用于:IO密集型任务