博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Medusa:比CPython更快的Python实现
阅读量:5732 次
发布时间:2019-06-18

本文共 903 字,大约阅读时间需要 3 分钟。

作为一种解释型语言,Python有优点,也有缺点。它简单灵活,但编写大型软件时,其执行速度会低于其它原生/JIT语言。项目的目标就是要克服Python的这一缺点,提供功能更强大、执行速度更快的Python。

\\

该项目基于Dart虚拟机,用Qt/C++、Python和Dart实现。它不仅为Python提供了一个更快的执行环境,而且还保持着Python原有的灵活性。Medusa将Python代码实时编译成Dart代码,然后由Dart虚拟机直接编译成机器代码,总共包括如下六个步骤:

\\
  1. 将Python源文件分解成标记;\\
  2. 将步骤1生成的标记解析成一棵抽象语法树,同时检查错误;\\
  3. 遍历树,在每个节点生成等价的Dart代码并优化;\\
  4. 将代码缓存在持久性存储SQLite3数据库中;\\
  5. 使用Dart代码调用Dart虚拟机;\\
  6. 缓存生成的机器代码并输出。\

相应地,其架构图如下:

\\

0125000.png

\\

与CPython相比,通过Medusa生成的代码要快10~15倍。而且,Dart虚拟机的一些特性进一步丰富了Python的功能,开发人员可以用它做更多的事情。比如,项目主要开发人员,涉及代码如下:

\\
sayHello() \def sayHello(): print \"Hello\"
\\

这样的代码在CPython中会无法执行,因为sayHello()函数在定义之前被调用了。但Medusa可以找到函数定义,并生成Dart代码。

\\

先前也有类似的项目,比如谷歌的实验性项目就试图将隐式静态类型的Python程序编译成C++代码,但它对输入的代码有诸多限制。而Medusa项目的目标是运行已有的Python代码,而又不需要或者只需要很小的修改。

\\

该项目由来自在线电子商务平台解决方案提供商MartMobi Technologies的Rahul De开源,遵循BSD 3-Clause许可协议。要了解更多信息,可以阅读。


感谢对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至。也欢迎大家通过新浪微博()或者腾讯微博()关注我们,并与我们的编辑和其他读者朋友交流。

转载地址:http://obmwx.baihongyu.com/

你可能感兴趣的文章
RabbitMQ】三种Exchange模式——订阅、路由、通配符模式
查看>>
连接数据库——java
查看>>
拥在怀里
查看>>
chm文件打开,有目录无内容
查看>>
whereis、find、which、locate的区别
查看>>
TRUNK
查看>>
一点不懂到小白的linux系统运维经历分享
查看>>
MDT 2013 从入门到精通之软件自动化部署设置
查看>>
桌面支持--打不开网页上的pdf附件解决办法(ie-tools-compatibility)
查看>>
桌面支持--outlook取消收件规则1
查看>>
nagios监控windows 改了NSclient++默认端口 注意事项
查看>>
干货 | JAVA代码引起的NATIVE野指针问题(上)
查看>>
POI getDataFormat() 格式对照
查看>>
Project build error: Non-resolvable import POM
查看>>
Python 中的进程、线程、协程、同步、异步、回调
查看>>
swoft速学~redis引入
查看>>
LTS
查看>>
sublime插件自用
查看>>
好的产品原型具有哪些特点?
查看>>
实现java导出文件弹出下载框让用户选择路径
查看>>