我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Dropbox正开发的开源Python 解释器Pyston的实例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Dropbox正开发的开源Python 解释器Pyston的实例分析

这期内容当中小编将会给大家带来有关Dropbox正开发的开源Python 解释器Pyston的实例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

大家好,我非常激动宣布 Pyston,这是一个正在由 Dropbox 开发的开源 Python 解释器。 这个项目的目标是产生一个高性能的 Python 解释器,使 Python 也能用于那些被如 C++ 这样的传统系统语言占据的领域。

在 Dropbox ,我们热爱 Python ,尝试用它来做一切可以做的事情。然而随着规模的的变大和要处理的问题越来越多,我们开始发现继续使用 Python 而要达到我们的性能目标有时候极其困难。有时用另外一门语言重写也起不了多大作用。我本人非常喜欢 Python , 每次当我们决定重写什么东西的时候我都很受伤,所以我想为它做一点什么。在静态编译上做了一些无用功后,我们到处查资料然后发现 JIT 技术在 Javascript 上非常成功,尤其 是 Chrome 的 V8 引擎大大地改善了 Javascript 的性能。我们希望通过同样的技术也能在 Python 上达到相同的性能提升。

Pyston 现在仍然处于初期阶段,还不能投入使用。但我们希望早点在它的生命周期之初就公布并开源出来,这样我们就能和 Python 和 JIT 社区来合作开发了。太多的细节在这篇博客写不下,但我们想说一下我们为什么需要一个新的 Python 实现,以及讲一点点 Pyston 是怎么工作的。

为什么选择实现一个新的 Python 解释器

早就已经有了一大堆使用 JIT 技术的 Python 实现:PyPy 使用它的 tracing JIT 来提高性能;Jython 和 IronPython 都是构建在广泛支持 JIT 的虚拟机上的。所以为什么我们认为还值得开始创造一个新的实现呢?

简单来说,是因为我们认为绝大多数有前景的技术都和现有的实现不兼容。比如,在 Javascript 界就因为强大的性能优势从 tracing JIT 切换到 method-at-a-time JIT 。对 Python 是否有同样的性能优势还有待商榷,但由于这两种途径从根本上都是和现有的实现不兼容的,所以答案只能是构建一个新的 method-at-a-time JIT。

另外一个区别是我们对传统的垃圾回收器有计划地使用来高效地支持拓展模块。同样,我们现在也无法知道这是否是一种更好的方法,但这个决定对一个很难在现有的实现下进行测试的 JIT 来说是必不可少的。

从零开始的坏处就是,创造一个新的语言的实现毋庸置疑是一个巨大的任务。幸运的是, 有助于这个过程的一些工具已经开始出现了。尤其是 Pyston 是构建在 LLVM 之上的,使得我们不需要自己处理细节就可以生成上层的高质量代码。尽管如此,一个新的 Python 实现还是一个巨大 的工程,所以 Pyson 将不会马上就能投入使用。

它是怎么工作的

从顶层看,Pyston 将解析好的 Python 代码转换成 LLVM 中间代码。然后中间代码就通过 LLVM 的优化然后传递给 LLVM 的 JIT 引擎,产生可执行的机器代码。LLVM 包含许多优化步骤和机制,使得它能产生非常快的代码。

然而问题是 LLVM 不能推出 Python 代码,因为动态语言不得不把所有底层的行为都隐藏在类型分派(Type Dispatch)后。为了解决这个问题,Pyston 采用类型推断:虽然证明一个变量将会是某个特别的类型通常是不可能,但是 Pyston 经常可以根据一些确定的事实来预测某个对象会是什么类型。一旦做出 了一个预测,Pyston 将在运行时检测这个预测,在预测所对应的快速分支和预测失败所对应的慢速分支之间进行选择。

Pyston 还包含许多其他的现代技术,比如为快速查找属性和快速调用方法而设计的隐藏类和内联缓存。你可以在 Github 页面上找到更多的技术细节,以及一篇单独讲述这些技术细节的博文。

现状

Pyston 仍然处于初始阶段,只支持 Python 语言的一个最小子集。拿基准测试数据来说话是不怎么公平的,因为 1) Pyston 不支持足够大的基准测试,所以这不具备代表意义。2) Pyston 不支持所有运行时特性(包括一些可能带来减速的特性),所以这不是一个同类的比较。 在这两点注意事项下,Pyston 在性能上通常可以击败 CPython,但是仍然弱于 PyPy。

上述就是小编为大家分享的Dropbox正开发的开源Python 解释器Pyston的实例分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Dropbox正开发的开源Python 解释器Pyston的实例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Dropbox正开发的开源Python 解释器Pyston的实例分析

这期内容当中小编将会给大家带来有关Dropbox正开发的开源Python 解释器Pyston的实例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。大家好,我非常激动宣布 Pyston,这是一个正在由 D
2023-06-17

Python开发之迭代器&生成器的实战案例分享

在Python中,迭代器和生成器都是用来遍历数据集合的工具,可以按需逐个生成或返回数据,从而避免一次性加载整个数据集合所带来的性能问题和内存消耗问题。本文主要和大家分享几个贴近实际运维开发工作中的场景案例,希望对大家有所帮助
2023-05-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录