多进程和多线程都是用于提高程序的效率
多进程:核心是多道技术,本质上就是切换加保存状态,当IO比较多的时候可以提高
效率
什么是多线程? 程序的运行线路
线程相当于流水线,包含了程序的具体执行步骤
进程相相当于一个车间
进程中包含了运行该程序所需要的所有资源,进程是一个资源单位,线程是CPU的
最小执行单位
每一个进程一旦被创建就默认开启了一条线程,这条线程称之为主线程
进程与线程的关系
进程包含线程,线程依赖进程
2.为什么使用线程?
为了提高程序效率,使用线程而不用进程的原因是:进程对操作系统的资源消耗非常高
线程如何提高效率:多线程可以使CPU在一个进程内部切换,聪哥提高CPU的占用率
3.如何使用多线程?
两种开启线程的方式 1.实例化Thread 2.继承Thread类 覆盖run方法
什么时间需要开启多线程? 1.当程序当中遇到IO的时候
当程序中是纯计算任务的时候,不需要开启多线程,开启之后也无法提高效率
4.进程和线程使用区别?
1.进程对操作系统的资源消耗非常高,而线程低(比进程低10-100倍)
2.在同一个进程中,多个线程之间资源是共享的
5.守护线程(同一个进程间)
守护线程:会在所有非守护线程结束后结束
守护进程: 守护进程会在被守护进程死亡之后死亡
同一个进程,可以有多个守护线程
6.线程中常用属性
Thread实例对象的方法
# isAlive(): 返回线程是否活动的。
# getName(): 返回线程名。
# setName(): 设置线程名。
threading模块提供的一些方法:
# threading.currentThread(): 返回当前的线程变量。
# threading.enumerate(): 返回一个包含正在运行的线程的list.正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
# threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
7. 什么时候使用互斥锁?
当多个进程或多个线程需要修改同一份数据时,可能会造成数据的错乱,所以必须得加
锁
8. 信号量
也是一种锁,特点是:可以设置数据被几个线程(进程)共享的次数
普通锁一旦加锁则意味着这数据只能同时被一个线程使用,信号量可以让这个数据在
同一时间让多个线程使用