位置: 编程技术 - 正文

Python中进程和线程的区别详解(进程 python)

编辑:rootadmin

推荐整理分享Python中进程和线程的区别详解(进程 python),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python进程与线程的区别有哪些,python进程与线程的区别,python的线程在进程空间内通过gil,python进程线程协程的区别,python的线程在进程空间内通过gil,python的线程在进程空间内通过gil,python中进程和线程,进程 python,内容如对您有帮助,希望把文章链接给更多的朋友!

Num?>线程

线程是操作系统中能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

一个线程指的是进程中一个单一顺序的控制流。

一个进程中可以并发多条线程,每条线程并行执行不同的任务。

Num?>进程

进程就是一个程序在一个数据集上的一次动态执行过程。

进程有以下三部分组成:

1,程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成。2,数据集:数据集则是程序在执行过程中需要的资源,比如图片、音视频、文件等。3,进程控制块:进程控制块是用来记录进程的外部特征,描述进程的执行变化过程,系统可以用它来控制和管理进程,它是系统感知进程存在的唯一标记。

Num?>进程和线程的区别:

1、运行方式不同:

进程不能单独执行,它只是资源的集合。

进程要操作CPU,必须要先创建一个线程。

所有在同一个进程里的线程,是同享同一块进程所占的内存空间。

2,关系

进程中第一个线程是主线程,主线程可以创建其他线程;其他线程也可以创建线程;线程之间是平等的。

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

3,速度

启动线程比启动进程快。

运行线程和运行进程速度上是一样的,没有可比性。

线程共享内存空间,进程的内存是独立的。

4,创建

父进程生成子进程,相当于复制一份内存空间,进程之间不能直接访问

创建新线程很简单,创建新进程需要对父进程进行一次复制。

一个线程可以控制和操作同级线程里的其他线程,但是进程只能操作子进程。

5,交互

Python中进程和线程的区别详解(进程 python)

同一个进程里的线程之间可以直接访问。

两个进程想通信必须通过一个中间代理来实现。

Num?>几个常见的概念

1,什么的并发和并行?

并发:微观上CPU轮流执行,宏观上用户看到同时执行。因为cpu切换任务非常快。

并行:是指系统真正具有同时处理多个任务(动作)的能力。

2,同步、异步和轮询的区别?

同步任务:B一直等着A,等A完成之后,B再执行任务。(打电话案例)

轮询任务:B没有一直等待A,B过一会来问一下A,过一会问下A

异步任务:B不需要一直等着A, B先做其他事情,等A完成后A通知B。(发短信案例)

Num?>进程和线程的优缺点比较

首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。

如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker。

如果用多线程实现Master-Worker,主线程就是Master,其他线程就是Worker。

多进程模式最大的优点就是稳定性高,因为一个子进程崩溃了,不会影响主进程和其他子进程。(当然主进程挂了所有进程就全挂了,但是Master进程只负责分配任务,挂掉的概率低)著名的Apache最早就是采用多进程模式。

多进程模式的缺点是创建进程的代价大,在Unix/Linux系统下,用fork调用还行,在Windows下创建进程开销巨大。另外,操作系统能同时运行的进程数也是有限的,在内存和CPU的限制下,如果有几千个进程同时运行,操作系统连调度都会成问题。

多线程模式通常比多进程快一点,但是也快不到哪去,而且,多线程模式致命的缺点就是任何一个线程挂掉都可能直接造成整个进程崩溃,因为所有线程共享进程的内存。在Windows上,如果一个线程执行的代码出了问题,你经常可以看到这样的提示:“该程序执行了非法操作,即将关闭”,其实往往是某个线程出了问题,但是操作系统会强制结束整个进程。

在Windows下,多线程的效率比多进程要高,所以微软的IIS服务器默认采用多线程模式。由于多线程存在稳定性的问题,IIS的稳定性就不如Apache。为了缓解这个问题,IIS和Apache现在又有多进程+多线程的混合模式,真是把问题越搞越复杂。

Num?>计算密集型任务和IO密集型任务

是否采用多任务的第二个考虑是任务的类型。我们可以把任务分为计算密集型和IO密集型。

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

计算密集型任务由于主要消耗CPU资源,因此,代码运行效率至关重要。Python这样的脚本语言运行效率很低,完全不适合计算密集型任务。对于计算密集型任务,最好用C语言编写。

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

IO密集型任务执行期间,%的时间都花在IO上,花在CPU上的时间很少,因此,用运行速度极快的C语言替换用Python这样运行速度极低的脚本语言,完全无法提升运行效率。对于IO密集型任务,最合适的语言就是开发效率最高(代码量最少)的语言,脚本语言是首选,C语言最差。

总结

以上所述是小编给大家介绍的Python中进程和线程的区别,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

浅谈使用Python变量时要避免的3个错误 Python编程中经常遇到一些莫名其妙的错误,其实这不是语言本身的问题,而是我们忽略了语言本身的一些特性导致的,今天就来看下使用Python变量时导

基于Python __dict__与dir()的区别详解 Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案。__dict__与dir()的区别:dir()是一个函数,返回的是list;__dict__是

Python 判断是否为质数或素数的实例 一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除(2,3,5,7等),换句话说就是该数除了1和它本身以外不再有其他的因数。首先我

标签: 进程 python

本文链接地址:https://www.jiuchutong.com/biancheng/372119.html 转载请保留说明!

上一篇:python logging日志模块的详解(python的日志)

下一篇:浅谈使用Python变量时要避免的3个错误(python 变参)

  • 以前年度计提的工资没发放怎么处理
  • 附加税期末余额在贷方怎么处理
  • 一般纳税人企业是什么意思
  • 员工一次性补偿要缴纳个税吗
  • 固定资产什么时候入账
  • 进口的原材料没有发票
  • 未开票收入怎么写分录
  • 对方增值税发票丢失怎么办
  • 建筑服务 1%
  • 一次性离职补偿个税
  • 什么税不计入税金及附加科目
  • 免抵退税额抵减额是什么意思
  • 开票资料地址填营业执照
  • 房地产收费依据与标准
  • 企业亏损减资的会计处理
  • 预提职工存量怎么做会计凭证
  • 单位登记注册类型指的是什么
  • 其他应付款挂多少有风险
  • qt5core.dll丢失解决方法
  • mac 双系统如何调整系统空间
  • 暂估入库发票回来怎么做账
  • 办妥托收手续会计分录
  • deepin下载教程
  • 硬盘的转速有什么用
  • 跨年冲减无发票怎么入账
  • java.exe进程可以关掉吗
  • 东洛锡安的金黄麦田,苏格兰 (© Scott Masterton/plainpicture)
  • deepwiser怎么用
  • 第三方代收的款项是什么意思
  • 分类问题的评价方法有
  • 小规模企业利息收入要交税吗
  • 一台设备可以分开开票吗
  • 递延所得税资产借贷方向
  • 一般人转小规模政策文号
  • 商标注册费用可以退吗
  • 百旺金赋怎么开红字发票
  • 利润总额包括的内容主要有
  • 注册资金只能增加不能减少吗
  • 软件研发费用怎么做账
  • 其他应付款借方余额怎么调整
  • 个体工商户核定征收超额怎么缴税
  • 消费税是怎样征收的
  • 接受捐赠收入作为广告费扣除基数吗
  • 勾选认证能够勾选当月
  • 研发折旧怎么分类
  • 汽车装修费计入哪个科目
  • 中小微企业有哪些企业
  • 期末贷方余额什么意思
  • 购入不需要安装的固定资产会计科目
  • 失控发票进项税转出成本调整
  • 企业垃圾桶
  • 小规模季报成功后怎么缴费
  • 固定资产需要具备的条件
  • 小规模纳税人计算公式
  • 套现给现金还是转账好
  • 营业成本包括哪些会计科目
  • win10怎么设置允许远程
  • mac快捷键使用
  • 最小化安装centos7怎么装图形界面
  • win1020h2正式版下载
  • 注意 Win/WP8.1开发者账户现已迁移到全新Win10开发者中心仪表盘
  • 时间服务器ip 端口
  • win10怎么关掉
  • 怎么禁止电脑qq自动启动
  • Extjs中通过Tree加载右侧TabPanel具体实现
  • jquery-file-upload 文件上传带进度条效果
  • python cx_Oracle的基础使用方法(连接和增删改查)
  • perl正则表达式匹配 \w \s
  • android app 开发框架
  • 拥有一个属于自己的空间高中作文
  • javascript中checkbox使用方法简单实例演示
  • jquery插件库怎么导入
  • 开票系统怎么设置默认税率
  • 留抵税额如何抵扣
  • 城市基础设施配套费由哪个部门收取
  • 购置税完税证明电子版怎么查看
  • 出口退税出现预缴怎么办
  • 留底税额怎么写分录
  • 浙江省增值税专用发票票样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设