python程序.进程和线程

(一).程序.进程.线程
程序:理解为一个应用
进程:程序运行(内存分配的最小单位)一个程序可以有多个进程
线程:cpu调度的最小单位必须依赖进程,因为他没有资源啊 进程可以有多个线程共享全部资源
(二)为什么多进程和多线程可以提高程序的运行速度?
1.提高程序运行速度第一种方法:
提高cpu利用率:不能让cpu空闲下来当程序中一个线程阻塞了(可能是休眠time.sleep或者是io操作读写文件input等)cpu在这时进行处理其他线程即进行多个任务切换—多线程处理
2第二种方法:
增加cpu:不同的cpu处理不同的任务每个核去处理每个进程-----多进程处理
3并发和并行
并行;多个cpu处理多个进程在同一时间片一起执行
并发:多个任务一起发生但不能同时处理cpu够到哪个处理哪个 但是时间间隔很小的情况下可以当做并行 这也是python全局性解释锁造成一弊端
(三). python中threading模块
1.多线程开启方式
a.使用threading模块
t = threading.Thread(
target=线程执行的任务(方法)名字,
args = 执行方法的参数,是一个元组
)—创建线程
t.start()—启动线程
b.使用自定义类的形式来创建线程
1)继承threading.Thread–拥有功能
2)保证父类的init()方法能够被调用
super().init()
threading.Thread.init(self)
用类获取创建线程的步骤
a1继承thread
a2.重写run方法
a3.实例化线程类,就相当于创建一个线程,用对象去调用start()方法就可以启动线程
a4.如果自定义线程类要实现init方法,必须继承父类的init方法

2、线程的名称:可以帮我们测试时那个线程做的哪件事。
线程对象.name查看:默认是Thread-1,Thread-2…
自定名称:其实就是给self.name赋值
3、查看线程的数量
threading.enumerate()–可以查看当前进程中的线程的对象 需要用len()方法计算出长度
4、线程的执行顺序是混乱的。原因是:线程的状态决定的。
5.死锁的条件:
死锁的发生会让程序永久阻塞.
(1) 同一个线程,先后获取两次锁对象,在第二次获取锁对象时,会死锁
(2)线程a拥有锁1,线程2拥有锁2,线程a在不释放锁1的情况下,试图获取锁2,线程b在不释放锁2的情况下试图获取锁1,此时在获取对方锁的时候,会发生死锁
(四) 多线程和多进程
1.功能:
多线程和多进程都能做到多任务
2.定义:
进程:是资源分配的最小单位,一个程序可以有多个进程
线程:cpu调度的最小单位,必须依赖进程而存在.线程没有独立资源,所有线程共享该进程的全部资源
3.区别:
(1) 关系:一个程序至少有一个进程,一个进程至少有一个线程.
(2)有无资源:进程拥有独立资源,线程依赖于进程,没有独立资源,所以该线程共享所在进程的所有资源
(3)划分尺度:线程的划分尺度小于进程(利用资源比进程少)使得多线程程序并发性更高
4.优缺点:
线程:线程执行开销小,但不利于资源的管理和保存.
进程:多个进程之间相互独立,不利于进程间的信息交互.进程拥有独立资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值