Python的运行速度确实没有C或者Java快,但是有一些项目正在努力让Python变得更快。

Python代码简洁干净,但是大家都知道Python运行起来相对较慢 --- 在CPU密集型的任务上慢于C、Java和Javascript(小编著:但是大多数服务都不是CPU密集型的)--- 但是有些团队希望Python是尽善尽美的,所以他们准备从内而外地提升Python的性能。

如果你想让Python在特定硬件上运行得快一点,你至少有两个选择,每个选择都有一些弊病:

a. 你可以创建一个Python运行时的替代品,但是最后你会发现你重写了一遍CPython。

b. 你可以重写现存的部分代码来利用一些性能优化的特性,缺点是程序员需要做更多的工作。

下面是五种已有的方案,帮助你提高Python的性能。

PyPy

在CPython的替代品中,PyPy是最显眼的那一个(比如Quora就在生产环境中使用它)。它也最有机会成为默认解释器,它和现存Python代码高度兼容。

PyPy使用适时编译来加速Python,这项技术Google也在使用,Google在V8引擎中使用它加速Javascript。最近的版本PyPy2.5增加了一些提升性能的特性,其中有一项很受欢迎,它集成了Numpy,Numpy之前也一直被用来加速Python的运行。

使用Python3的代码需要对应地使用PyPy3。PyPy目前只支持到Python3.2.5,对Python3.3的支持正在进行中。

Pyston

Pyston,由Dropbox资助,使用LLVM编译器架构来加速Python,同样的它也使用了适时编译。相比于PyPy,Pyston还处于早期阶段,它只支持Python的部分特性。Pyston把工作分成两个部分,一部分是语言的核心特性,另一部分是把性能提升到可接受的程度。Pyston距离可以在生产环境使用还有一段距离

Nuitka

除了替换Python运行时,有些团队尝试将Python代码转换为能够在本地高效运行的其他语言的代码。其中著名的项目是Nuitka--把Python代码转换为C++代码--虽然运行时还是依赖Python运行时。这样限制了它的可移植性,不过性能提升是可观的。长期规划中,Nuitka还准备让C语言能够调用Nuitka编译的Python代码,这样性能提升将更加明显。

Cython

Cython(Python的C语言扩展)是Python的超集,它能把Python代码编译成C代码,并与C和C++进行交互。它可以作为Python项目的扩展使用(重新性能要求高的部分),或者单独使用,不涉及传统的Python代码。缺点是你写的不是Python,所以需要手动迁移,缺乏可移植性。

据说,Cython提供了一些特性来让代码更高效,比如变量类型化,这本质上是C要求的。一些科学计算的包,如scikit-learn依赖Cython的一些特性来保持操作简洁快速。

Numba

Numba接合了上面几个项目的想法。学习了Cython,Numba也采用了部分加速的策略,只加速CPU密集型的任务;同时它又学习了PyPy和Pyston,通过LLVM运行Python。你可以用一个装饰器指定你要用Numba编译的函数,Numba继承Numpy来加速函数的执行,Numba不做适时编译,它的代码是预先编译的。

Python之父说大部分觉得Python慢的应用都是没有正确地使用Python。对于CPU密集型的任务有多种方法来提升性能--使用Numpy来做计算,调用外部C代码,以及尽量避免GIL锁。由于GIL锁目前还无法被替代,所以有很多项目开始尝试一些短期可行的替代方案,当然这些方案也可能转变为长期的可选项。

欢迎加入京东金融官方交流群:456448095,有任何疑问和意见都可讨论交流。

python3 性能提升_5个提升Python性能的项目相关推荐

  1. python3 性能提升_整理下Python性能语法,非常有效的提高性能的tips

    阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. ...

  2. just函数python_提升 Python 性能 Numba 与 Cython

    ? "Python猫" ,一个值得加星标的公众号花下猫语:最近,读者微信群里又频繁聊到了 Python 的性能问题,这真是老生常谈了.我想起自己曾收藏过几篇关于如何提升性能的文章, ...

  3. python性能提升之并行处理for循环

    python性能提升之并行处理for循环 通过multiprocessing中的Pool来创建一个进程池,进而达到并行处理for循环的目的. Pool(processes=None, initiali ...

  4. python性能提升之字符串拼接、字节流拼接

    python性能提升之字符串拼接.字节流拼接 1.字符串拼接 常规的拼接方式是使用+,比如: s1 = 'hello' s2 = 'world' print('s1,s2地址', id(s1)) s1 ...

  5. 使用Hummingbird提升Rackspace Cloud Files的性能

    Rackspace Cloud Files是一个使用OpenStack Swift构建的大规模云对象存储系统.随着发展,该系统遇到了许多可扩展性问题.近日,Cloud Files项目经理Matt Ba ...

  6. Intel不挤牙膏了!10nm性能参数公布:提升43%

    日前,Intel再次强调10nm芯片定于今年底上市,其核心指标包括"1平方毫米中塞下1亿个晶体管.鳍片间距做到34nm,最小金属间距则做到36nm". 关于10nm的家族代号目前存 ...

  7. 一体机性能服务器图片介绍,浪潮发布AI一体机 整体性能较普通服务器提升10倍以上...

    原标题:浪潮发布AI一体机 整体性能较普通服务器提升10倍以上 9月10日,浪潮携手第四范式在京联合发布了AI软硬件一体机产品"Prophet AIO",寓意为打造"AI ...

  8. 拿着阿里这份Java性能调优手册,我把公司项目性能提升了300%

    程序的性能受代码质量的直接影响.那么该如何让代码在级别上提升系统性能呢? 其实性能提升永远没有捷径,需要 分析.优化.实验.监控 ,需要一点点积累和深入.随着你对项目和性能优化理解不断深入,会发现提升 ...

  9. 提高php性能的介意,ThinkPHP5提升性能的办法_浙江PHP博客

    PHP博客分享关于使用tp5框架如何提升部分性能,框架中很多影响性能的问题在于,很多请求都要重新加载,如果能避免过度加载的问题,就能提升部分性能,所以我们通过缓存来实现这一功能,具体如下. 首先说明 ...

最新文章

  1. 牛!这位斯坦福PhD新生的论文被引数:接近4万
  2. Burpsuite学习(4)
  3. Linux-Iptables-Memcached实现内网转发连接
  4. 注册MSComm方法
  5. 编写C语言代码,实现以下功能:有N名学生,每个人的信息包括学号、姓名和语文、数学、英语、平均分等内容(用结构体表示 ),输出平均分排名倒数第2的学生信息。
  6. 回旋滚动_中频炉电动旋转轴承,管道回旋轴承,电炉旋转轴承
  7. Active Directory的安装
  8. 计算机语言学汉语言文学,汉语言文学本科通关宝典-《语言学概论》.pdf
  9. Shell脚本编程30分钟入门学习
  10. 向量的数量积,向量积,混合积
  11. RK3568 Android12 长按power键功能设置
  12. 2021年电子设计大赛预测--球形机器人设计方案
  13. cesium 根据SampledPositionProperty与timeline实现轨迹回放功能(跟随视角、上帝视角) 详细代码与理解记录
  14. Java中Date日期时间的工具类
  15. 2022年全国职业院校技能大赛 网络搭建与应用赛项 公开赛卷 (十套合卷)
  16. ECCV2020Workshop-PAN-270k参数量SISR网络 | Efficient Image Super-Resolution Using Pixel Attention
  17. 【SE】Week2 : 个人博客作业
  18. numpy中的np.ix_的用法
  19. 变速积分PID控制算法
  20. 推荐:走遍美国视频下载

热门文章

  1. 和平精英体验服服务器更新维护什么意思,和平精英8月9日体验服官方申请地址 和平精英更新6项内容需要多注意!和平精英8月9日更新时间确定...
  2. 集群起不来oracle,Oracle11g rac 集群无法启动分析及处理
  3. vue组件弹出框点击显示隐藏
  4. Mysql锁机制简单了解一下
  5. 拼接sql语句参数绑定
  6. Android开发如何去除标题栏title(转)
  7. VS2013开发Windows服务项目
  8. 机器学习的开源工具-开源程序-研究工具
  9. python定时器 循环_Python循环定时服务功能(相似contrab)
  10. Gstreamer1.16.2与Glib2 signals关键字冲突解决(十一)