Python基础-多线程基础

一、多线程介绍

1.进程

(1)计算机程序只不过是磁盘中可执行的二进制(或其他类型)的数据。它们只有在被读取到内存中,被操作系统调用的时候才开始它们的生命期

(2)进程(有时被称为重量级进程)是程序的一次执行。每个进程都有自己的地址空间、内存、数据栈以及其他记录其运行轨迹的辅助数据。操作系统管理在其上运行的所有进程,并为这些进程公平地分配时间

2.线程

线程(有时被称为轻量级进程),跟进程有些相似,不同的是,所有的线程运行在同一个进程中,共享相同的运行环境。我们可以先想象成是在主进程或“主线程”中并行运行的“迷你进程”

3.进程和线程的关系

(1)进程中第一个线程是主线程,主线程可以创建其他线程

(2)其他线程可以创建线程,线程之间是平等的

(3)进程有父进程和子进程,独立的内存空间,唯一标识符:pid

4.进程和线程功能

(1)进程:能够完成多任务,比如一台电脑同时运行多个QQ

(2)线程:能够完成多任务,比如一个QQ中的多个聊天窗口

5.进程和线程的区别和联系

(1)一个程序至少有一个进程,一个进程至少有一个线程(这个线程就是主线程)

(2)线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高

(3)进程在执行过程中拥有独立的内存单位,而多个线程共享内存,从而极大地提高了程序的运行效率

(4)线程不能独立执行,必须依存在进程中

(5)线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源

(6)进程是系统进行资源分配和调度的一个独立单位,进程是资源分配的单位,线程是cpu调度的单位

6.进程与线程的优缺点

(1)多进程的优点是稳定性好,一个子进程奔溃不会影响主进程以及其余进程。但是缺点是创建进程的代价非常大,因为操作系统要给每个进程分配固定的资源,并且,操作系统对进程的总数会有一定的限制,若进程过多,操作系统调度都会存在问题

(2)多线程优点是效率较高一些,但是致命缺点是任何一个线程奔溃都可能造成整个进程的奔溃,因为他们共享了进程的内存资源池

7.并发与并行

(1)并发:在一个时间段,处理多个任务,单核也可以并发(CPU分时间片);

(2)并行:在同一时刻,处理多个任务,必须多核才能并行

8.全局解释器锁(GIL)

(1)GIL本质就是一把互斥锁,将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务修改,进而保证数据安全

(2)某个线程想要执行,必须先拿到GIL,我们可以把它看做一个线程的“通行证”。每个进程中只有一个GIL

猜你喜欢

转载自blog.csdn.net/qq_39620483/article/details/87854277