同步、异步
- 同步指调用请求发送给被调用者,需要等被调用者返回结果之后才能继续做其它事情。
- 异步指当调用请求发出给被调用者后,调用者不用等待到返回的结果就可以直接继续其它事情。
- 同步和异步描述的是消息通信机制,是跟消息有关的描述用语。
- 同步异步也是是否能开启新进程或线程的前提。
串行、并行
- 串行和并行描述任务的执行方式。
- 串行表示各个任务按照顺序执行。
- 并行则是任务可以同时执行。注:异步是并行的前提,注意区分之间的区别。
并发、并行
- 并发与多线程概念对应,表示在某一时段有多任务运行,但在某个确定时刻却只有一个任务在运行。多个运行的任务在不同时段互相切换,表现出同时在运行的状态。
- 并行同上,表示同时执行多个任务的能力。
阻塞、非阻塞
- 阻塞非阻塞用于表示调用结果返回进程或线程之前的状态。
- 阻塞表示进程或线程不能继续运行,被挂起,非阻塞则表示进程线程可以继续运行。
- 阻塞、非阻塞和同步、异步很容易搞混,阻塞状态描述的是进程或线程在等待消息返回时的状态,同步和异步则用于描述整个程序的消息通信机制。
进程、线程、协程
- 进程是线程协程的基础,只有开启了进程,在进程中才能生出线程或者协程,因此进程也被成为线程的容器。
- 进程即某个程序运行的实例,在系统中拥有唯一的进程号。程序运行最小的执行单元是进程中的线程,没有额外设置线程时,程序默认只产生一个主线程。
- 由于具有GIL(全局解释器锁),因此python即使使用多线程,但实际上是类似于并发的,即每个进程只能使用一个核,多个线程在获取GIL后不断地交替运行。
- 多线程在I/O密集型任务中还是很适合(如爬虫等),多进程则适用于CPU密集型。
- 协程是对线程进行操作,使用协程可以自己进行类似多线程的操作,但是线程间的切换是由程序本身控制的。这样就不用花时间在线程切换上,一定程度上提高了程序运行效率。
叮
内容都是在网上读了之后自己整理的,可能会出错,如果有错误的话请提出来,我即刻修改!