教程引言:
该系列教程会系统地讲解并发与并行的基础概念,以及如何使用Python进行并发编程。掌握并发编程,是成为一名优秀程序员所必须具备的基本功。
3.1.1 为什么需要引入线程?
在第二章中讲到了进程的概念,进程是资源分配的基本单位,每创建一个进程,系统都需要分配CPU,内存,磁盘等资源。系统中不止存在一个进程,从当前进程切换执行其它进程时,系统需要将当前进程的上下文信息保存下来,以便下一次继续执行。
所谓的进程上下文,是指该进程的所有执行状态信息。当系统切换执行另一个进程时,需要保存当前进程的所有状态,以便下次执行该进程时,能够从切换时的状态继续执行下去。
此外,进程在销毁时,系统需要回收进程占用的所有资源。在80年代之前,进程是资源分配的基本单位,也是系统进行调度和执行的基本单位。由于进程的创建、切换、销毁存在较大的开销,因此,在80年代引入了一种能独立运行的基本单位-线程。 线程远比进程轻量,只占用较少的系统资源,自线程被引入以后,线程成为系统进行调度和执行的最小单位。
3.1.2 进程是线程的容器
进程是操作系统进行资源分配的基本单位,进程运行于系统中,以这样的角度来看,可将操作系统理解为一个包含各种进程的容器。进程运行在操作系统这个容器里面,占用着操作系统的各种资源:CPU,内存,磁盘等。
而线程是运行在进程内部的执行实体,一个线程对应一个单一顺序的控制流,从这一个角度来看,进程则是线程的容器。在支持多线程的操作系统中,一个进程内部可以并发执行多个线程。
线程运行在进程这个容器里面,共享着进程内部的资源,这表现为:所有线程共享进程的地址空间,打开的文件等。进程中的多个线程之间,可以并发地执行,线程的执行也是由操作系统进行调度的,系统会根据实际情况,将线程指定给特定的CPU核心,以此进行并发计算。
3.1.3 知识要点
(1) 进程是资源分配的基本单位,每创建一个进程,系统都需要分配CPU,内存,磁盘等资源(2) 在80年代引入了一种能独立运行的基本单位-线程。 线程远比进程轻量,只占用较少的系统资源,自线程被引入以后,线程成为系统进行调度和执行的最小单位。(3) 操作系统是进程的容器,进程是线程的容器(4) 所有线程共享进程的地址空间
3.1.4 课后习题
(1)为什么需要在系统中引入线程?(2)课后思考题:线程共享进程的地址空间,那么线程之间如何进行通信?
关注微信公众号:Python在线课堂,学习Python视频课程以及其它的编程课程:tornado,django,web开发,网络爬虫,大数据分析,机器学习。公众号后台回复“学习资料”领取Python,web开发,网络爬虫,大数据分析,机器学习等学习资料。