并行、并发、进程、线程、协程的区别

78 阅读1分钟

1.并行

并行是指不同的代码块同时执行,它以多核CPU为基础,每个CPU独立执行一个程序,各个CPU之间的数据相互独立,互不干扰。

2.并发

并发是指不同的代码块交替执行,它以一个CPU为基础,使用多线程的方式提高CPU的利用率,线程之间会相互切换,轮流被程序解释器执行。

3.进程

进程是一个实体,每个进程都有自己的地址空间,简单来说,进程是一个“执行中的程序”。

4.线程

线程是进程中的一个实体,被系统独立调度和分配的基本单位。线程自己不拥有系统资源,只拥有运行中必不可少的资源,同一个进程的线程并发执行,这些线程共享进程所拥有的资源。

5.协程

协程是一种比线程更轻量级的存在,不被系统内核管理,完全由程序操控,运行效率极高。不像线程切换需要花费操作系统的开销,线程数量越多,协程的优势越明显。协程不受GIL的限制,因为只有一个线程,不存在变量冲突。