python学习笔记(二十五)进程与线程、多任务原理

本文深入探讨了进程和线程的概念,分析了它们在资源管理、执行效率和系统稳定性方面的区别,并介绍了多任务原理,包括单核和多核CPU环境下多任务的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、进程vs线程

1、进程:

2、线程:

二、进程与线程的区别

三、多任务原理



一、进程vs线程

1、进程:

  
 进程是系统中程序执行和资源分配的基本单位,每个进程都有自己的数据段、代码段和堆栈段主进程就是master,其他进程就是worker
优点:稳定性高  一个子进程崩溃了,不会影响主进程和其他子进程,但主进程崩溃会、
      导致所有子进程崩溃,但是master进程只负责分配任务,崩溃的概率较低

缺点:1、创建进程的代价大,在unix/linux系统下,用fork调用还行,在windows下创建进程开销巨大
      2、操作系统能同时运行的进程数有限。在内存和cpu的限制下,如果有几千个进程同时在运行,操作系统的调度都会成问题



2、线程:

在一个进程内部要同时干多件事,就需要同时运行多个‘子任务’,我们把这些子任务称为线程

线程通常叫做轻型的线程。线程是共享内存空间的并发执行的多任务,每一个线程都共享一个进程的资源
线程是最小的执行单元,而进程至少要有一个线程。
如何调度进程和线程,完全由操作系统决定,程序不能决定什么时候执行,执行多长时间
主线程就是master,其他线程就是worker
优点:1、多线程模式通常比多进程快一点,但是也快不到哪去;
      2、在windows下,多线程的效率比多进程要高

缺点:任何一个线程挂掉都可能直接造成整个进程崩溃。所有线程共享的内存。在windows上
      线程执行的代码出了问题,你经常可以看到提示:程序执行了非法操作,即将关闭。其实往往是某个线程出了问题,但是操作系统会强制结束整个进程

计算密集型

要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数

IO密集型 

涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分 时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是I0密集型任务,比如Web应用

二、进程与线程的区别

 
进程与线程的区别?
1. 地址空间: 同一进程的所有线程共享本进程的地址空间,而不同的进程之间的地址空间是独立的。

2. 资源拥有: 同一进程的所有线程共享本进程的资源,如内存,CPU,IO等。进程之间的资源是独立的,无法共享。

3. 执行过程:每一个进程可以说就是一个可执行的应用程序,每一个独立的进程都有一个程序执行的入口,顺序执行序列。但是线程不能够独立执行,必须依存在应用程序中,由程序的多线程控制机制进行控制。

4. 健壮性: 因为同一进程的所以线程共享此线程的资源,因此当一个线程发生崩溃时,此进程也会发生崩溃。 但是各个进程之间的资源是独立的,因此当一个进程崩溃时,不会影响其他进程。因此进程比线程健壮。



线程执行开销小,但不利于资源的管理与保护。

进程的执行开销大,但可以进行资源的管理与保护。进程可以跨机器前移。

 

三、多任务原理

现代操作系统(Windows、Linux、Mac OS X、Unix等)都支持多任务
多任务:操作系统同时可以运行多个任务

早期电脑主要是单核CPU
单核CPU实现多任务原理:操作系统轮流让各个任务交替执行,QQ执行2us(微秒),切换到微信,再执行2us,再切换到陌陌,再。。。表面上看,每个任务都反复执行下去,但是CPU调度执行速度太快了。导致我们感觉就像所有任务都在同时执行一样。

多核CPU实现多任务原理:真正的并行执行多任务只能在多核CPU上实现,但是由于任务的数量远远多于CPU数量,所以操作系统也会自动把很多任务轮流调度到每个核心上执行
并发:看上去一起执行,任务数大于CPU核心数
并行:真正一起执行,任务数小于CPU核心数

实现多任务的方式:

多进程模式
多线程模式
协程模式
多进程+多线程模式
multiprocessing:跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值