相关文章推荐
冲动的楼梯  ·  成功安装pip后python-levensh ...·  3 月前    · 
拉风的保温杯  ·  php如何获取上一个月的今天的上一天的日期- ...·  1 月前    · 
大鼻子的双杠  ·  Linux编译安装Python3.9——以C ...·  3 周前    · 
近视的口罩  ·  python中怎样删除字符串头尾的空格和换行 ...·  1 周前    · 
从容的碗  ·  txt文件如何设置每行为空行?_编程语言-C ...·  5 天前    · 
奔跑的创口贴  ·  mysql ...·  1 年前    · 
爱喝酒的核桃  ·  红白锦鲤 - 搜狗百科·  1 年前    · 
气势凌人的牛腩  ·  [阿里/夸克]在下李佑 ...·  2 年前    · 
个性的啄木鸟  ·  RECARO - 条款和条件·  2 年前    · 
闯红灯的八宝粥  ·  【漫画】【连载中】《迷宫饭》PDF JPG ...·  2 年前    · 
Code  ›  让 Python 变快的 5个方案开发者社区
python python函数 编程语言
https://cloud.tencent.com/developer/article/1799229
霸气的小马驹
2 年前
作者头像
Python进击者
0 篇文章

让 Python 变快的 5个方案

前往专栏
腾讯云
备案 控制台
开发者社区
学习
实践
活动
专区
工具
TVP
文章/答案/技术大牛
写文章
社区首页 > 专栏 > JAVAandPython君 > 正文

让 Python 变快的 5个方案

发布 于 2021-03-09 16:59:57
2K 0
举报

大家好,我是Kuls。

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

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

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

  1. 你可以创建一个 Python 运行时的替代品,但是最后你会发现你重写了一遍 CPython。
  2. 你可以重写现存的部分代码来利用一些性能优化的特性,缺点是程序员需要做更多的工作。

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

1. PyPy

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

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

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

2. Pyston

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

3. Nuitka

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

4. Cython

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

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

5. Numba

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

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

本期的文章就到这里了,如果觉得有点意思,可以给个大大的点赞、在看、转发!

点击展开阅读全文
文章分享自微信公众号:
Python进击者
Python进击者

扫码关注公众号

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

原始发表:2021-02-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

python
打包
numpy
java
登录 后参与评论
关于作者
0
文章
0
累计阅读量
0
获赞
前往专栏
关注 - 腾讯云 开发者 公众号
将获得
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
扫码关注腾讯云开发者
NEW
切换旧版
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档
 
推荐文章
冲动的楼梯  ·  成功安装pip后python-levenshtein/levenshtein的导入失败开发者社区
3 月前
拉风的保温杯  ·  php如何获取上一个月的今天的上一天的日期-百度经验
1 月前
大鼻子的双杠  ·  Linux编译安装Python3.9——以CentOS7为例开发者社区
3 周前
近视的口罩  ·  python中怎样删除字符串头尾的空格和换行-百度经验
1 周前
从容的碗  ·  txt文件如何设置每行为空行?_编程语言-CSDN问答
5 天前
奔跑的创口贴  ·  mysql 根据子级id查询其所有的父级的_达梦8 根据子id递归查询父id并合并查询结果-CSDN博客
1 年前
爱喝酒的核桃  ·  红白锦鲤 - 搜狗百科
1 年前
气势凌人的牛腩  ·  [阿里/夸克]在下李佑 (2023)【更新28】 4k 1080P剧情 喜剧 古装 管云鹏歪嘴战神 - 影视 - 盘友 - 网盘资源分享站
2 年前
个性的啄木鸟  ·  RECARO - 条款和条件
2 年前
闯红灯的八宝粥  ·  【漫画】【连载中】《迷宫饭》PDF JPG 百度网盘下载 – 次元狗
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号