欢迎访问牛耳教育官网 专注实战IT培训技术20年!
400-0731-162
当前位置:IT培训机构 > Python培训 > Python培训:Python的性能简析

Python培训:Python的性能简析

时间: 2020-09-17 | 作者: admin | 分类:Python培训 | 关键字:Python培训,Python编程 | 阅读量:

导读:如果在终端输入pythonmyscript.py,CPython会开始对这段代码进行一系列的读取、词法分析、解析、编译、解释和运行。

    如果你的应用是基于单线程和单解释器的,讨论速度是没有意义的,因为去掉GIL不会影响代码性能。如果您想在单个解释器(Python进程)中使用线程来实现并发,并且您的线程是IO密集型的(如网络IO或磁盘IO),您将看到GIL争用的结果。
 
    如果您有一个web应用程序(比如Django)并且使用WSGI,那么您的web应用程序的每个请求都将是一个独立的Python解释器,所以每个请求只有一个锁。因为Python解释器启动慢,一些WSGI集成了可以保持Python进程的“守护进程”。
Python培训:Python的性能简析
 
    其他Python解释器的速度呢?
 
    PyPy拥有GIL,通常比CPython至少快三倍。
 
    Jython没有GIL,因为在Jython中Python线程由Java线程表示,这要归功于JVM内存管理系统。
 
    JavaScript是怎么做到的?
 
    首先,所有的Javascript引擎都使用标记和清除的垃圾收集系统,而前面提到的GIL的基本需求是CPython的存储管理算法。
 
    JavaScript没有GIL,但是因为它是单线程的,所以也不需要GIL。
 
    JavaScript通过事件循环和提交/回调模式实现异步编程的并发。Python有一个类似异步事件循环的过程。
 
    “因为是解释性语言”
 
    经常听到这句话。我认为这只是对CPython实际工作原理的简单解释。如果在终端输入pythonmyscript.py,CPython会开始对这段代码进行一系列的读取、词法分析、解析、编译、解释和运行。
 
    这个过程中很重要的一步就是在编译阶段创建一个.pyc文件,这个字节码序列会被写到Python3下的__pycache__/路径中的一个文件中(对于Python2,文件路径是一样的)。此步骤不仅适用于脚本文件,还适用于所有导入的代码,包括第三方模块。
 
    所以大多数时候(除非你写的代码只运行一次),Python是在解释字节码,并在本地执行。
 
Python培训:Python的性能简析

    我们来对比一下Java和C#。NET:
 
    Java编译成“中间语言”,然后Java虚拟机读取字节码,立即编译成机器码。CIL的通用中间语言。NET也是一样,它的公共语言运行库(CLR)也是通过即时编译翻译成机器码的。
 
    那么,如果Python使用和Java、C#一样的虚拟机和一些字节码,为什么在基准测试中会慢很多呢?首先,NET和Java都是用JIT编译的。
 
    JIT,也称为即时编译,需要一种中间语言来将代码分成块(或数据帧)。预编译器(AOT)的设计确保了CPU在交互之前能够理解每一行代码。
 
    JIT本身并没有使执行更快,因为它仍然执行相同的字节码序列。但是,JIT允许在运行时进行优化。一个好的JIT优化器可以检测哪些部分执行的更频繁,这些部分被称为“热点”。然后,它会用更高效的代码替换它们来完成优化。
 
    这意味着当一个计算机应用程序需要重复做一件事时,速度会更快。另外,我们需要知道Java和C#都是强类型语言(变量需要预定义),这样优化器就可以对代码做更多的假设。
免责声明:本文内容来源于公开网络,若涉及侵权联系尽快删除!,【本文标题和网址】Python培训:Python的性能简析:http://www.csnewer.com/Pythondt/861.html
申请免费试学
快捷咨询
资深IT讲师一对一为您解答IT问题
电话
咨询服务电话
400-0731-162
微信
IT培训_长沙java培训机构_专注于实战IT培训技术20年-牛耳教育官网
关注了解更多IT知识
QQ
热门课程
java软件开发课程 Java是一种可以撰写跨平台应用程不齐人60%Java工程师缺口序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、...
嵌入式应用开发课程 嵌入式开发就是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。除暂且分离硬件的...
软件测试课程 软件测试具有人才缺口大、发展方向广、专业无限制、适合零基础、技术上手快、职业生涯稳等优势。 人才缺口大 国内测试...
Web前端开发课程 web前端开发是创建Web页面或app等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方...
java+大数据课程 什么是Java大数据? Java,是一门面向对象编程语言,具有功能强大和简单易用的特征。作为**受欢迎的计算机语言,发展至今...
python人工智能课程 Python是一门神奇的编程语言,它具有简单易学、就业面广、就业薪资高、竞争压力小、开发效率高、行业风口等6个优势,下...
热门资讯
本文:(零基础学java)零基础也能学Java,5大Java学习方法!,最近有很多同学来问小编,关于学习java的方法,下面小编根据...
大家的生活已经离不开嵌入式就连常用的共享单车都离不开嵌入式。所以越来越多的人看中了嵌入式的就业前景,转行来做嵌...
Web前端培训机构的好坏直接决定了你学习后的就业薪资,市面上web前端培训机构那么多,应该如何选择靠谱的web前端培训机构...
当谈到Python时,一般指的是CPython。但Python实际上是一门语言规范,只是定义了Python这门语言应该具备哪些语言要素,应当能...
目前,Python非常流行并且被广泛使用。它是目前最热门的行业之一,竞争激烈,工资高,未来发展出色。但是对于学习Pytho...
打算参加嵌入式培训的同学对于嵌入式培训课程的内容都特别的关心,只有在了解了课程内容之后才能更好的知道这个嵌入式...
2020年学习嵌入式晚不晚?1、学技术不像学艺术,只要坚持,任何时候学都不晚。很多人对于学习嵌入式应用开发都会有所顾...
本文(零基础学python)0基础学习Python容易犯哪些错误呢?主要介绍1. 忘记写冒号 在if、elif、else、for、while、class、def 语句后...
本文:IT培训就业感言(牛耳教育IT培训就业感言),介绍:转眼间几个月在牛耳教育的IT培训就结束了,从学习到就业也算是...
it培训学校有用吗?其实判断IT培训学校有没有用,看培训的课程是否能满足自己的需求就可以了,如果培训的课程自己都了...