当前位置:首页 > 科技  > 软件

一文看懂,为什么 Python 运行速度如此慢?

来源: 责编: 时间:2024-06-05 17:43:15 91观看
导读在编程社区中,众所周知Python编程语言在速度方面并不占优势。"但是就是慢..."在这篇文章中,我将介绍Python的不同特性,我们将了解为什么这使其成为当今最完整的语言之一,但速度不够快。但首先,让我们掌握一些关于编程语言

在编程社区中,众所周知Python编程语言在速度方面并不占优势。zIz28资讯网——每日最新资讯28at.com

"但是就是慢..."zIz28资讯网——每日最新资讯28at.com

在这篇文章中,我将介绍Python的不同特性,我们将了解为什么这使其成为当今最完整的语言之一,但速度不够快。但首先,让我们掌握一些关于编程语言的基本知识。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

抽象级别

正如我们可能知道的那样,编程语言通常根据其抽象级别进行描述。zIz28资讯网——每日最新资讯28at.com

  • 低抽象级别表明该语言更接近硬件(难以解释)
  • 高级别表示代码更接近用户(易于解释)。

zIz28资讯网——每日最新资讯28at.com

抽象级别(从硬件到现代编程语言)zIz28资讯网——每日最新资讯28at.com

C++、PHP、Java、Python等都被认为是现代(或高级)编程语言,因为它们可以在几乎任何类型的系统上运行。在汇编语言中,我们必须根据每个特定处理器的指令编写不同的程序(无法在不同的CPU上运行相同的代码)。例如,如果我们创建一个打印“Hello world”的程序并将代码发送给我们的朋友(他有不同的计算机型号),当他尝试执行它时,它可能会失败。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

现代语言:金字塔的最后抽象层

zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

现代语言抽象zIz28资讯网——每日最新资讯28at.com

尽管是离机器码最高的抽象,但在金字塔的最后一层也有层次结构。一方面,我们可以找到过程化语言,如C,我们需要逐步知道自己在做什么。这具有非常高效的优点,但缺点是复杂且不够灵活。另一方面,其他语言通过让我们使用更易读和灵活的代码来简化任务。这就是Python的情况。我们几乎可以用它做任何事情,而且易于实现,但在某些任务上效率不高。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

但为什么Python确切地说是“慢”呢?zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

让我们回顾一些语言特性以回答这个问题。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

解释性语言

首先,Python是一种解释性语言,这意味着代码由软件程序(称为解释器)逐行读取和执行,在运行时进行。这是将代码转换为机器代码的一种方式。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

编译型语言

另一种使代码“为机器可理解”的方式是通过编译过程。在这种情况下,源代码在实际在计算机上运行之前通过编译器转换为机器代码。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

编译型与解释型语言zIz28资讯网——每日最新资讯28at.com

为什么解释性方式更慢?

在解释性语言中,源代码的每一行在执行过程中都会即时转换为机器代码。这意味着每次程序运行时,解释器必须解析、分析和执行代码,这增加了与直接运行预编译机器代码相比的开销。例如:如果某段代码运行多次(例如,在循环内),解释器必须每次遇到时读取和转换它。相反,编译程序将直接运行机器代码,无需在通过循环时重新翻译它。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

CPython及其全局解释器锁(GIL)

标准的Python解释器是CPython。它由C和Python编写,将Python代码编译成字节码,然后进行解释。为了防止多个本机线程同时执行Python字节码,CPython使用全局解释器锁。这个锁是必要的,因为CPython的内存管理不是线程安全的。然而,在多线程程序中,它可能是一个显著的瓶颈,限制了在多核处理器上进行多线程的性能提升。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

全局解释器锁的工作流程zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

动态类型

此外,Python是动态类型的,这意味着在初始化变量时不需要声明变量的类型。这对效率有何影响呢?嗯,在动态类型语言中,类型是在运行时确定的。这意味着解释器需要在执行代码片段时进行类型检查。这需要额外的处理来确定每个变量的类型以及根据这些类型执行操作的方式。而动态类型语言的对立面是什么?zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

静态类型语言

在这种情况下,变量的类型在编译时而不是在运行时确定。因此,类型在编译时已知,编译器可以更激进地优化代码执行。这导致更快但不够灵活的程序。一些采用这种方法的语言包括C++和Rust。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

静态类型与动态类型语言zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

垃圾收集

垃圾收集是一种编程语言运行时系统用于回收程序不再使用的内存的自动内存管理形式。Python通过垃圾收集自动管理其对象的内存分配和释放。它使用的主要垃圾收集方法是引用计数。Python中的每个对象都有一个引用计数,即指向它的引用数量。当引用计数降至零,即不再有指向该对象的引用时,它会立即从内存中删除。zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

垃圾收集器的工作流程zIz28资讯网——每日最新资讯28at.com

zIz28资讯网——每日最新资讯28at.com

然而,垃圾收集是一把双刃剑...zIz28资讯网——每日最新资讯28at.com

它通过自动清理未使用的对象极大简化了内存管理,有助于防止由于手动内存管理导致的内存泄漏和其他错误。但它引入了开销和不可预测性,可能影响应用程序的性能。zIz28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-92126-0.html一文看懂,为什么 Python 运行速度如此慢?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: C# new 关键字的三种用法

下一篇: 模拟实现.NET中的Task机制:探索异步编程的奥秘

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • 把LangChain跑起来的三个方法

    把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 一年经验在二线城市面试后端的经验分享

    一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • JavaScript学习 -AES加密算法

    JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中扮演着重要角色,它提升了DevOps的效能。通过自动化工具和方法,DevOps团队可以实现以下目标:消除手动和重复性任务。简化流程。在整个软件开发生命周期中实现更
  • 造车两年股价跌六成,小米的估值逻辑变了吗?

    造车两年股价跌六成,小米的估值逻辑变了吗?

    如果从小米官宣造车后的首个交易日起持有小米集团的股票,那么截至2023年上半年最后一个交易日,投资者将浮亏59.16%,同区间的恒生科技指数跌幅为52.78%
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top
Baidu
map