CPython是什么?PyPy是什么?Python和这两个东西有什么关系

作者&投稿:汉卞 (若有异议请与网页底部的电邮联系)
脚本语言需要解释器才能运行,为什么可以用Python来写Pypy,而且效率比CPython更高呢?~

但是C因为跟底层过于接近,所以实现JIT解释器有诸多限制。(比如Psyco到项目死亡为止都没能实现出64位的JIT解释器)Pypy则换了另外一种思路。它先实现了一个Python的子集(注意,不是完整的python),叫RPython。然后用RPython去实现了Python的JIT解释器。这个RPython本身,并不依赖运行时解释器,而是直接被翻译成C代码(实际上可以翻译成多种目标代码,如Java、C#等)再进行编译,本质上它是一种编译型语言。所以,用RPython写出来的程序,最终是会被编译成本地代码的,跟C写的没有本质区别。由于RPython作者强大的优化功力,RPython程序最终编译结果基本等同于C直接写的效率。用这种程序实现出来的JIT解释器,自然也不会慢。而JIT技术,又保证了运行在这个解释器上的Python程序的效率的提升。

PyPy为优化和进一步的语言开发提供了更好的架构。对于大部分Python已有的问题,PyPy已经提供了解决方案:

先进的runtime和设计,在此文中作了介绍: The Architecture of Open Source Applications.
速度 - PyPy内置的JIT很棒,有时(其实很少)甚至可以与C相提并论。
GIL问题 - PyPy引入了一个很棒的STM实现,在 Armins Rigo的 文章中对此作了介绍。
粘合代码 - 使用cffi可以简单的处理C库,甚至比CPython的ctypes还要快!
异步编程。这方面,PyPy内置的 greenlet 比CPython的C扩展更适合一些。实际上,非堆栈式的概念(也即greenlet)在PyPy中还在继续发展(参看https://ep2012。europython。eu/conference/talks/the-story-of-stackless-python)
沙盒技术
应用在web和移动中。这里有Dusty的一些文章:Pushing Python Past the Present

PyPy已经支持多平台 (x86, 64_x86, ARM)

PyPy同时还包含了一个优秀的现代的架构,在 Jim Huang 的演讲 中做了介绍,演讲的要点是:

解释性语言的框架
用于研究和产品的组件组合 (不同的数据模型,垃圾回收 - 这些可以在具体的应用场景进行改变)
构建在基于组件链的功能架构之上(翻译工具链)。每一个步骤都会延续/转换程序模型、引入特征、各种后端(JVM, JavaScript, LLVM, GCC IR等等)。来看一下翻译链的例子:python 代码 -> 字节码 -> 函数对象 -> 类型推断 -> 垃圾收集器 -> JIT
包含大量在架构的不同层次开发的现代的优化技术 (这个任务可以简化)

相信让所有软件支持PyPy需要付出艰巨的努力 - 需要在现有的库上做很多工作。不过使用新的工具,编写支持PyPy和CPython的软件会比采用C扩展的方式更简单一些(在我们能做什么一节有介绍)。

CPython:是用C语言实现Pyhon,是目前应用最广泛的解释器。最新的语言特性都是在这个上面先实现,基本包含了所有第三方库支持,但是CPython有几个缺陷,一是全局锁使Python在多线程效能上表现不佳,二是CPython无法支持JIT(即时编译),导致其执行速度不及Java和Javascipt等语言。于是出现了Pypy。

Pypy:是用Python自身实现的解释器。针对CPython的缺点进行了各方面的改良,性能得到很大的提升。最重要的一点就是Pypy集成了JIT。但是,Pypy无法支持官方的C/Python API,导致无法使用例如Numpy,Scipy等重要的第三方库。这也是现在Pypy没有被广泛使用的原因吧。

而PyPy与CPython的不同在于,别的一些python实现如CPython是使用解释执行的方式,这样的实现方式在性能上是很凄惨的。而PyPy使用了JIT(即时编译)技术,在性能上得到了提升。



python是一种编程语言。但这种语言有多种实现,而且与其他语言不同,python并没有一个专门的机构负责实现,而是由多个社区来实现。其中使用c语言开发的叫做python,在于别的语言开发的python对比时为避免歧义通常称为CPython。同样的,使用java开发的叫做JPython,使用.net开发的叫做IronPython。

而PyPy与CPython的不同在于,别的一些python实现如CPython是使用解释执行的方式,这样的实现方式在性能上是很凄惨的。而PyPy使用了JIT(即时编译)技术,在性能上得到了提升。


python是什么意思
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python由Guido van Rossum于1989年底发明,第一...

python是什么意思?
python本意是:巨蛇,大蟒;Python是一种跨平台的计算机程序设计语言。python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python的创始人为荷兰人吉多·范罗苏姆(...

Python是什么意思?Python是的含义
Python的中文名称是蟒蛇。它是一种跨平台的解释性、编译性、互动性和面向对象的脚本语言。Python程序可移值到Linux、Windows等基于linux开发的android平台,还可嵌入c语言程序,从而向程序用户提供脚本功能。Python 主要用于 Web 和Internet开发,数字编程,游戏开发;还可应用到科学计算和统计、桌面开发、软件...

python是什么语言
Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初是用来编写自动化脚本的,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。Python特点主要有以下几个方面:1、简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英...

python有哪些语言?
Python是一种计算机程序设计语言,你可能已经听说过很多流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript等,Python就是其中之一。python用的是什么语言写的python属于解释型语言。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。具有...

Python是什么?
Python是一种高级编程语言,它可以用于各种领域,如数据科学、机器学习、Web开发等。Python在人工智能领域也有着广泛的应用。而Python人狗大战则是一款基于Python语言的人工智能游戏,它可以让你在游戏中体验到编写人工智能算法的乐趣。操作步骤 1.首先,你需要安装Python。你可以从Python官方网站上下载Python的...

Python是什么编程语言
Python是一种面向对象的解释型计算机程序设计语言,是纯粹的自由软件, 源代码和解释器CPython遵循GPL协议。Python语法简洁清晰,特色之一是强制用空白符作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块很轻松地联结在一起。常见的一种应用情形是,使用Python...

Python到底是什么东西?
Python是一种跨平台的计算机程序设计语言,是ABC语言的替代品。Python的作用有这些:1、Web开发:Python拥有很多免费数据函数库、免费web网页模板系统、以及与web服务器进行交互的库,可以实现web开发,搭建web框架。2、数据科学:将Python用于机器学习:可以研究人工智能、机器人、语言识别、图像识别、自然语言...

Python是什么 python是什么语言
Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域:Web和Internet开发;科学计算和统计;人工智能;桌面界面开发;软件...

python是一种什么类型的编程语言
python是一种广泛使用的具有动态语义的解释型,面向对象的高级编程语言。Python是一种面向对象的高级编程语言,具有集成的动态语义,主要用于Web和应用程序开发。它在快速应用程序开发领域极具吸引力,因为它提供动态类型和动态绑定选项。Python是一种解释型语言,这意味着用Python编写的程序不需要事先编译就...

弋江区15514147891: CPython是什么?PyPy是什么?Python和这两个东西有什么关系 -
贰齿澳蒲: CPython:是用C语言实现Pyhon,是目前应用最广泛的解释器.最新的语言特性都是在这个上面先实现,基本包含了所有第三方库支持,但是CPython有几个缺陷,一是全局锁使Python在多线程效能上表现不佳,二是CPython无法支持JIT(即时...

弋江区15514147891: python shell 有哪些 -
贰齿澳蒲: 首先Python是一种语言,因此根据其实现的不同,有Cpython, Jython, Pypy等. CPython即用C语言实现Python及其解释器(JIT编译器),Jython是用Java语言来实现,Pypy是用Python来实现(准确说是个Python子集).就好像是英语也分美国、英国、澳大利亚等英语,其语法是想通的,但是类库的实现是不同的. 至于学习Python是否要学习底层实现,这个应该是不必要的,只从应用的角度来说,是没这个必要的.但是如果需要系统的掌握这门语言,那么了解底层实现更有助于了解这门语言的设计思想以及实现限制等方面

弋江区15514147891: 为什么有这么多 Python -
贰齿澳蒲: 自从我使用Python工作以来,我已经用过了各种各样的.*ython工具了.但是直到最近我才花时间去理解到底它们是干嘛的,它们是怎样工作的,为什么它们是不可或缺的. 在这篇文章里面,我会介绍各种Python的实现,最后以对PyPy的介绍结...

弋江区15514147891: 脚本语言需要解释器才能运行,为什么可以用Python来写Pypy,而且效率比CPython更高呢? -
贰齿澳蒲: 但是C因为跟底层过于接近,所以实现JIT解释器有诸多限制.(比如Psyco到项目死亡为止都没能实现出64位的JIT解释器) Pypy则换了另外一种思路.它先实现了一个Python的子集(注意,不是完整的python),叫RPython.然后用RPython去...

弋江区15514147891: python有没有办法能够编译成DLL文件 -
贰齿澳蒲: 通用情况下,没有什么好办法能把python编译成dll,因为python是解释型语言,dll是编译后的二进制文件,2者不在一个次元.除非你把python的解释器也打包进你的工程,并在你的exe里调用. 但某些特殊情况下,也有把python的代码编译成dll文件的方法,在.net环境下,可以用IronPython这个工具,它可以把python代码编译成dll.

弋江区15514147891: python的各种实现有何优劣 -
贰齿澳蒲: CPython CPython是标准Python,也是其他Python编译器的参考实现.通常提到“Python”一词,都是指CPython.CPython由C编写,将Python源码编译成CPython字节码,由虚拟机解释执行.没有用到JIT等技术,垃圾回收方面采用的是引用计...

弋江区15514147891: python是用C语言写的么 -
贰齿澳蒲: python和c都是一门编程语言.我告诉你python是c写的,你能明白是什么意思吗?这样的说法本来就是不严谨的.所谓python是c写的是指python默认的cpython解释器是c写的.除此之外还有java实现的jython解释器等.

弋江区15514147891: Python的GIL是什么鬼,多线程性能究竟如何 -
贰齿澳蒲: 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念.就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码.有名的编译器例如GCC,INTEL C++,Visual C++...

弋江区15514147891: 用python做的网页需要客户端装解释器才能打开吗? -
贰齿澳蒲: 不需要 Python解释器 当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高...

弋江区15514147891: 我想知道python软件界面的源代码 -
贰齿澳蒲: Python和Python解释器是不同的.Python本身是一种编程语言,相当于语法,而Python解释器是载体、软件,是python的实现.CPython(标准Python)是用C语言实现的Python解释器,也是官方的并且是最广泛使用的Python解释器.除了...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网