0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python的各种实现有何优劣

马哥Linux运维 来源:cg 2019-01-07 15:44 次阅读

当谈到Python时,一般指的是CPython。但Python实际上是一门语言规范,只是定义了Python这门语言应该具备哪些语言要素,应当能完成什么样的任务。这种语言规范可以用不同的方式实现,可以用C实现,也可以用C++JavaC#、JavaScript,甚至使用Python自己实现。这篇文章就是简要介绍并比较不同的Python实现,并且今后还会不断的扩充。

CPython

CPython是标准Python,也是其他Python编译器的参考实现。通常提到“Python”一词,都是指CPython。CPython由C编写,将Python源码编译成CPython字节码,由虚拟机解释执行。没有用到JIT等技术,垃圾回收方面采用的是引用计数。

所以当有人问道Python是解释执行还是编译执行,可以这样回答:Python(CPython)将Python源码编译成CPython字节码,再由虚拟机解释执行这些字节码。

如果需要广泛用到C编写的第三方扩展,或让大多数用户都能直接使用你的Python代码,那么还是使用CPython吧。

Jython

Jython在JVM上实现的Python,由Java编写。Jython将Python源码编译成JVM字节码,由JVM执行对应的字节码。因此能很好的与JVM集成,比如利用JVM的垃圾回收和JIT,直接导入并调用JVM上其他语言编写的库和函数。

对于想在JVM上使用Python简化工作流程,或者出于某些原因需要在Python语言中使用Java的相关代码,同时无需用到太多CPython扩展的用户来说,极力推荐Jython。

IronPython

IronPython与Jython类似,所不同的是IronPython在CLR上实现了Python,即面向.NET平台,由C#编写。IronPython将源码编译成TODO CLR,同样能很好的与.NET平台集成。即与Jython相同,可以利用.NET框架的JIT、垃圾回收等功能,能导入并调用.NET上其他语言编写的库和函数。IronPython默认使用Unicode字符串。

另外,Python Tools for Visual Studio可以将CPython和IronPython无缝集成进VS中。如果仅需要在Windows上开发较大的Python项目。条件允许的情况下,IronPython是个不错的选择。

PyPy

这里说的PyPy是指使用RPython实现,利用Tracing JIT技术实现的Python,而不是RPython工具链。PyPy可以选择多种垃圾回收方式,如标记清除、标记压缩、分代等。

想对于CPython,PyPy的性能提升非常明显,但对第三方模块的支持真心是弱爆了。比如无法很好的支持使用CPython的C API编写的扩展,完全不支持使用SWIG、SIP等工具编写的扩展。就连NumPy,也要在编译器的层面上从头实现。即使实现了,也只能在Python层面中使用,无法供其他第三方模块在非Python环境中使用。关于PyPy,后续会尝试用一篇完整的文章来介绍。不过我的这一篇文章中对PyPy和下面的Pyston有更详细的描述。

Pyston

Pyston由Dropbox开发,使用C++11编写,采用Method-at-a-time-JIT和Mark Sweep——Stop the World的GC技术。Pyston使用类似JavaScript V8那样的多层编译,其中也用到了LLVM来优化代码。Pyston正在发展中,还不成熟。但其前景是非常值得看好的(如果没像Google的Unladen Swallow那样死掉的话。话说,Google的东西现在是越来越不敢用了,不是他们的东西不好,是怕用着用着,他们就关掉了)。

总结

这里介绍了主要(其实是我接触过的,^_^)的几款Python实现,这几款Python实现可以满足大部分需要。而略过了几款,如Cython、Brython、RubyPython等。其实Cython还是挺有用的,不过现在接触的不多,不敢多写,看后面能不能抽时间补上。而Brython、RubyPython,个人感觉完全可以用JS或Ruby,没必要在一种动态语言的环境中再使用另一种动态语言。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4536

    浏览量

    66496
  • python
    +关注

    关注

    51

    文章

    4657

    浏览量

    83379

原文标题:各种 Python 实现的简单介绍与比较

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    通过Python脚本实现WIFI密码的自动猜解

    本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的自动猜解。
    的头像 发表于 01-25 10:46 521次阅读
    通过<b class='flag-5'>Python</b>脚本<b class='flag-5'>实现</b>WIFI密码的自动猜解

    python各种函数的用法

    Python中有很多种不同类型的函数,它们在解决各种问题和完成不同任务时起着重要的作用。下面我将详细介绍几种常用的函数,包括内置函数、自定义函数、匿名函数以及高阶函数等。 内置函数: print
    的头像 发表于 11-23 15:48 345次阅读

    Python中Excel转PDF的实现步骤

    将Excel文件转换为PDF可以方便储存表格数据,此外在打印或共享文档时也能确保表格样式布局等在不同设备和操作系统上保持一致。今天给大家分享一个使用第三方Python库Spire.XLS for Python 实现Excel转P
    的头像 发表于 11-20 15:02 341次阅读
    <b class='flag-5'>Python</b>中Excel转PDF的<b class='flag-5'>实现</b>步骤

    Python和matplotlib的配置与使用

    了在各种数据挖掘研究涉及领域中使用的Python库,而且自带了专业用来处理软件环境中依赖问题的conda包系统。 主要优点是实现了外包管理与环境管理的各种功能,而且可以非常容易地处控制
    的头像 发表于 11-16 15:52 151次阅读
    <b class='flag-5'>Python</b>和matplotlib的配置与使用

    怎么在Python实现截图功能

    操作。 今天Python实用宝典就来讲讲怎么在Python实现截图功能,以下教程默认您已经安装好了Python哦,没有的话见这个教程, pytho
    的头像 发表于 11-03 15:32 439次阅读
    怎么在<b class='flag-5'>Python</b>中<b class='flag-5'>实现</b>截图功能

    如何让Python和Go互相调度

    我们曾经研究过如何让Python和Go互相调度,当时发现,将Go语言写的模块打包成动态链接库,就能在Python中进行调度: 优劣互补! Python+Go结合开发的探讨 Go的优势很
    的头像 发表于 11-02 11:24 225次阅读
    如何让<b class='flag-5'>Python</b>和Go互相调度

    Dynaconf 轻松实现 Python 动态配置管理

    Dynaconf 是一个Python的第三方模块,旨在成为在 Python 中管理配置的最佳选择。 它可以从各种来源读取设置,包括环境变量、文件、服务器配置等。 它适用于任何类型的 Pytho
    的头像 发表于 10-30 15:02 297次阅读

    什么是常量折叠?Python如何优雅地实现

    求值,然后用求值的结果来替换表达式,从而使得运行时更精简。 在本文中, 我们深入探讨了什么是常量折叠,了解了它在 Python 世界中的适用范围,最后解读了 Python 的源代码(即 CPython),并分析出 Python
    的头像 发表于 10-30 11:10 197次阅读
    什么是常量折叠?<b class='flag-5'>Python</b>如何优雅地<b class='flag-5'>实现</b>它

    DCM与CCM PFC控制相比有优劣

    DCM 与CCM PFC控制相比有优劣
    发表于 10-19 06:41

    python读取数据库数据 python查询数据库 python数据库连接

    python读取数据库数据 python查询数据库 python数据库连接 Python是一门高级编程语言,广泛应用于各种领域。其中,
    的头像 发表于 08-28 17:09 1129次阅读

    Python实现OpenCV的安装与使用

      本文实例讲述了 Python 实现 OpenCV 的安装与使用。分享给大家供 大家参考,具体如下:  由于下一步要开始研究下深度学习,而深度学习领域很多的算法和应 用都是用 Python
    发表于 07-20 11:46 7次下载

    Python2与Python3中对字符串的支持

    其实Python3中对字符串支持的改进,不仅仅是更改了默认编码,而是重新进行了字符串的实现,而且它已经实现了对UNICODE的内置支持,从这方面来讲Python已经和JAVA一样优秀。
    的头像 发表于 07-05 16:15 501次阅读

    使用现有组件实现任何电阻/电容

    电子发烧友网站提供《使用现有组件实现任何电阻/电容.zip》资料免费下载
    发表于 06-16 15:46 0次下载
    使用<b class='flag-5'>现有</b>组件<b class='flag-5'>实现</b>任何电阻/电容

    通过Python实现PLC数据可视化呈现于Web端的方案

    实现方法: 1、Python通过Modbus TCP或OPC UA采集ModiconM580 PLC数据 M580本体以太网口支持Modbus TCP,可通过Python
    发表于 04-20 10:33 1次下载
    通过<b class='flag-5'>Python</b><b class='flag-5'>实现</b>PLC数据可视化呈现于Web端的方案

    如何安装常用Python

    Python作为一种流行的编程语言,拥有丰富的第三方库资源,这些库可以帮助开发者轻松实现各种功能,从数据分析到Web开发,从机器学习到图像处理,涵盖了各个领域。在Python的开发过程
    的头像 发表于 04-14 12:11 784次阅读