进程:系统资源分配的最小单位
线程:线程是CPU调度的单位
协程:是由程序员自己写的调度策略,其通过协作而不是抢占来进行切换

线程分为单线程和多线程;一个进程中至少有一个线程;一个进程至少有一个协程。协程相当于一个微线程中一个线程的执行。
进程,线程,协程之间的区别与联系:

1.区别
1.进程是资源分配的最小单位,线程是CPU调度的最小单位.
2.进程是操作系统资源分配的单位
3.线程是CPU调度的单位
4.进程切换需要的资源最大,效率很低
5.线程切换需要的资源一般,效率一般(当然在不考虑GIL的情况下)
6.协程切换任务资源很小,效率高

2.线程是指进程内的一个执行单元,也是进程内的可调度实体。线程与进程的区别:
1.同一个进程中的线程共享同一内存空间,但是进程之间是独立的。
2.同一个进程中的所有线程的数据是共享的(进程通讯),进程之间的数据是独立的。
3.对主线程的修改可能会影响其他线程的行为,但是父进程的修改(除了删除以外)不会影响其他子进程。
4.一个进程至少有一个线程
5.同一个进程的线程之间可以直接通信,但是进程之间的交流需要借助中间代理(队列)来实现
6.创建新的线程很容易,但是创建新的进程需要对父进程做一次复制。
7.一个线程可以操作同一进程的其他线程,但是进程只能操作其子进程。
8.线程启动速度快,进程启动速度慢(但是两者运行速度没有可比性)。
3、协程与线程的比较
1. 一个线程可以多个协程,一个进程也可以单独拥有多个协程,这样python中则能使用多核CPU。
2. 线程进程都是同步机制,而协程则是异步
3. 协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态

并发与并行
并发
拥有处理多个任务的能力。对于单核CPU来说,只能处理并发
并行
拥有同时处理多个任务的能力,对于多核CPU,即可以并发和并行

阻塞和非阻塞
阻塞和非阻塞强调的是程序在等待调用结果(消息,返回值)时的状态
阻塞
程序在等待的过程中,线程是挂起状态。就像刚才的例子中,这个烧水的人,在等待水开的过程中在睡觉。而同步等待的过程中,线程是激活状态
非阻塞