ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

不同的Python实现方式的区别

2021-05-05 23:30:03  阅读:266  来源: 互联网

标签:Jython 方式 CPython 区别 Python python JVM IronPython


转自:http://www.weidianyuedu.com/content/1411714076207.html

不同的Python实现方式之间是有区别的。Python从2017年开始受到关注和追捧,它与高科技人工智能有关,但python是什么?python能做什么?似乎是最热门的话题。这里我先解释一下:

python是什么:其实python是一种面向对象的解释性计算机编程语言,拥有丰富而强大的库。该语言因其简单性、可读性和可扩展性而广受欢迎。

python能做什么:python可以用于图形处理、数学处理、文本处理、数据库编程、网络编程、Web编程、多媒体应用、pymo引擎、黑客编程、用Python写简单爬虫、人工智能等等。

所以我们说Python的时候,一般指的是CPPython。但Python其实是一种语言规范,它只定义了Python应该具备什么语言元素,应该完成什么任务。这个语言规范可以用不同的方式实现,比如C,C++,Java,C#,JavaScript,甚至Python本身。本文是对不同Python实现的简单介绍和比较,以后还会继续扩展。

CPython.

CPython是标准Python,是其他Python编译器的参考实现。一般来说,“Python”这个词指的是CPython。CPython是用c写的,c把Python源代码编译成CPython字节码,由虚拟机解释执行。不使用JIT等技术,垃圾收集使用引用计数。

所以,当有人问Python解释执行还是编译执行,答案可以是这样的:Python(CPython)将Python源代码编译成CPPython字节码,然后虚拟机解释执行这些字节码。

如果你需要大量使用C写的第三方扩展,或者让大部分用户直接使用你的Python代码,那就改用CPPython。

Jython.

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

对于希望使用Python简化JVM上的工作流程,或者由于某些原因需要使用Python语言的Java相关代码的用户,强烈推荐使用Jython,不要使用太多的CPPython扩展。

IronPython.

IronPython和Jython类似,不同的是IronPython在CLR中实现Python,面向。NET平台,用C#编写。IronPython将源代码编译成TODOCLR,也可以很好地与。.NET平台。也就是说,像Jython一样,它可以使用JIT、垃圾收集和。NET框架来导入和调用用其他语言编写的库和函数。.NET。IronPython默认使用Unicode字符串。

此外,PythonToolsforVisualStudio可以将CPython和IronPython无缝集成到vs中。如果只需要在Windows上开发大型Python项目。在条件允许的情况下,IronPython是一个不错的选择。

PyPy.

这里的PyPy指的是RPython和TracingJIT技术实现的Python,而不是RPython工具链。PyPy可以选择多种垃圾收集方式,比如标签移除、标签压缩、生成等等。

对于CPython来说,PyPy的性能明显提高了,但是对第三方模块的支持真的很弱。比如CPythonCAPI写的扩展不能很好的支持,SWIG,SIP等工具写的扩展根本不能支持。甚至NumPy都要在编译器级别从头实现。即使实现了,也只能在Python级别使用,不能在非Python环境下被其他第三方模块使用。

皮斯顿.

Pyston是Dropbox开发的,用C++11编写,采用了一次一法-JIT和MarkSweep-StoptheWorld的GC技术。Pyston使用像JavaScriptV8那样的多层编译,其中LLVM也是用来优化代码的。Pyston在发展,不成熟。但是它的前景很有希望。

总结一下。

在了解python是什么,python能做什么的基础上,相信大家已经了解了这些主要的python实现,以及它们之间的区别。他们之间也有一些区别和区别,比如Cython,Brython,RubyPython。

标签:Jython,方式,CPython,区别,Python,python,JVM,IronPython
来源: https://blog.csdn.net/xiaoyaozi2020/article/details/116432129

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有