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锁目前还无法被替代,所以有很多项目开始尝试一些短期可行的替代方案,当然这些方案也可能转变为长期的可选项。

在这里还是要推荐下我自己建的Python开发学习群:1156465813,群里都是学Python开发的,如果你正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2020最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴!

Python很慢?Python之父一句话亮了相关推荐

  1. 为什么电脑下载python很慢-Python运行速度慢你知道这是为什么吗?

    Python这门语言相较于其他的语言是更容易理解的,但是相比较于其他的语言的运行速度是慢的. 那么这是为什么呢? 首先先和大家讲一下编译器和解释器是什么. 计算机不能直接理解任何除机器语言以外的语言, ...

  2. python很全的爬虫入门教程

    python很全的爬虫入门教程 一.爬虫前的准备工作 首先,我们要知道什么是爬虫 1.什么是网络爬虫? 网络爬虫是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁 ...

  3. python核心理念_Python 之父谈放弃 Python:我对核心成员们失望至极!

    Python 之父讲述退位原因,以及 Python 的未来将何去何从. 在 Python 社区,Python 的发明者 Guido Van Rossum 被称为 "仁慈的终生独裁者" ...

  4. 很多都是python很简单吗,但是要如何才能入门python并精通呢?

    1,python怎么学 一般来说,Python几个月应该是可以入门了.如果你几个月还没有入门,一定是方法不对,要么就是偷懒了.我在公众号里面有一篇文章详细写过 '初学者上来不要学爬虫',爬虫虽然非常有 ...

  5. python难嘛-自学Python很难吗,为何会看不进去!

    首先学习python一定要以实用性为导向! 盲目看教程,结果大多是浅尝辄止,从入门到放弃.这里小九想给大家指引一条清晰的规划路!如何在一个月内入门python! 1.[why] 你为什么要学习pyth ...

  6. python学起来难不难-自学Python很难吗,为何会看不进去!

    原标题:自学Python很难吗,为何会看不进去! 首先学习python一定要以实用性为导向! 盲目看教程,结果大多是浅尝辄止,从入门到放弃.这里小九想给大家指引一条清晰的规划路!如何在一个月内入门py ...

  7. python太慢了-Python很慢?不一定哦

    请注意,这有点夸张. 首先,我要说明我是专业从事python工作的,我做出了许多开源贡献,并且我所有的业余爱好项目都使用python进行.我喜欢python. 但这很慢. 这是Reddit等论坛上的常 ...

  8. python语言用途-Python是万能的编程语言吗?这五大用途很重要!

    这个真的不好说,因为Python可以做的事情有很多,用途也是非常广泛的,尤其是在以下领域中更具有作用: 1.web开发:Python是一种解释型的脚本语言,开发效率高,所以非常适合用来做web开发;P ...

  9. python有什么好玩的库_你知道Python很火!那你知道它有哪些好玩的库吗?

    原标题:你知道Python很火!那你知道它有哪些好玩的库吗? 本文来源:sun菜菜(今日头条作者) 原文链接:https://www.toutiao.com/a6498615748884169230/ ...

最新文章

  1. Jsoncpp 使用方法解析
  2. HTTP状态码和支持的方法
  3. python基础6(来自廖雪峰的官方网站)
  4. ubuntu怎么清空回收站?(权限不够)
  5. 【无码专区4】幸运数字4(折半搜索+计数+结论)
  6. 串口数据波形显示_【专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传可飙到500KB/S...
  7. JavaScript中带有示例的Math.max()方法
  8. linux下配置Java和Go环境
  9. 如何把开源项目发布到Jcenter
  10. 【Flink】Flink 单个任务 多个流的消费同一个topic的时候其中一个流卡死 不消费
  11. alwayson 增加节点_用于AlwaysON高可用性的域控制器和域客户端节点设置
  12. emacs文件/目录比较工具
  13. python中map()函数的用法讲解
  14. 基于app_inventor的手机aap与单片机蓝牙互联教程
  15. javaweb项目页面崩溃报错
  16. 如何通过分析网页源码下载淘宝教育视频
  17. Linux服务器硬件及RAID
  18. BestCoder Round #86 HDU 5804,HDU 5805,HDU 5806,HDU 5807
  19. 基于opencv的人脸检测
  20. linux清理日志 hack,Linux系统的LOG日志文件及入侵后日志的清除

热门文章

  1. Java 实现 多级菜单
  2. Odoo V13 免费开源ERP 系统E-mail邮件功能设置操作指南
  3. java队列存储_存储神器——队列
  4. PhotoMOS MOSFET光控继电器控制电路
  5. 在vue中element ui 结合frappe-gantt实现一个简单的甘特图功能
  6. 傅立叶分析导论-5 傅里叶变换
  7. 关于TD标签中如何使用数据库中拿到的数据进行赋值判断
  8. uni.navigateTo 无法跳转到页面
  9. WPF、C# iconfont图标字体只显示框框
  10. 轻量级数据库访问框架FastSQL