当前位置: 首页 > news >正文

Python 之父立 Flag:明年要把 Python 速度提高 2 倍!

整理 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

去年 11 月,退休失败的 Python 之父 Guido van Rossum 在推特上宣布,退休生活太无聊,从而加入了微软开发者部门。微软自然支持优秀人才的发展,所以赋予了 Guido van Rossum “自由选择项目”的权利,Guido van Rossum 也表示会致力于“确保更好地使用 Python”。

彼时,相信不少人认为 Guido van Rossum 的这句“更好”不过是官宣时的“常用说法”,可在上周的 PyCon 语言峰会上,Guido van Rossum 证明了他那句话不是说说而已:要让 Python 成为更快的语言,承诺在明年的 Python 3.11 中要将其速度提高 2 倍,以解决Python 与 C++ 等其他编程语言相比在速度上的关键缺点

1

4 年把 Python 速度提升 5 倍

Guido van Rossum 在峰会上展示了一份提交至 GitHub 的 PDF,详细说明了他对于提高 Python 速度的决心与规划。(PDF 地址:https://github.com/faster-cpython/ideas/blob/main/FasterCPythonDark.pdf)

Guido van Rossum 介绍道,这个项目名为“Shannon Plan”,由微软资助的一个小团队负责,除了他还包括 Python Core 开发人员和微软高级软件工程师Eric Snow 以及 Semmle 的研究工程师 Mark Shannon,其中 Mark Shannon 主要开发用于代码安全性分析的产品,并且在去年十月就已经开始提出了这项给 Python 提速的计划,因此本次项目的命名也取自于他的名字“Shannon”。

据 Guido van Rossum 在演讲中所说,“Shannon Plan” 项目将全程在 GitHub 开源,并且将基于 Mark Shannon 此前有关 HotPy 和 HotPy 2(针对 CPython 的即时编译器)的开发经验,承诺将在 4 年内把 Python 速度提升 5 倍,即每年约提升 1.5 倍

以此为目标,Guido van Rossum 表示计划于明年发布的 Python 3.11 版本实现提升 2 倍的速度。他还大致解释了团队需要为此做出的努力:

  • 适应性、专门的字节码解释器(类似于内联缓存,但功能更全面)

  • 各种其他单独的优化:例如优化帧堆栈、调用更快、调整分配,还有“零开销”异常处理

不过 Guido van Rossum 也没有把话说的太死,因为提速实际上存在许多限制,包括不能破坏稳定的 ABI(应用程序二进制接口)兼容性、不能破坏 API 的兼容性、要保持代码兼容可维护以及在极端情况下不能降低速度等难题。

所以大概是为了避免意外,他补充道:“我们并不能确定我们肯定会达到 2 倍!只是乐观计划。”

2

微软持续助力 Python 发展

除了这个“Shannon Plan”,微软还资助了一支专门“负责解释语言的性能改进”的 Python 团队。其实不难看出,近年来微软一直都在深度拥抱开源,也很支持 Python 的发展。其中包括:发布免费的 Python 课程、通过 VS Code Python 扩展在 Windows 10 及以上版本均支持 Python。此外,微软自 2006 年起就成为了 Python 软件基金会(PSF)的正式赞助商,不说曾经,仅今年就已经提供了 15 万美元的赞助费。

微软 Python 与 AI 工具首席经理 Dan Taylor 对此曾表示:“作为提供给 PSF 15 万美元财务赞助中的一部分,我们将把资金集中到程序包工作小组当中,帮助他们进一步改善 PyPI 与程序包生态系统。”

不仅如此,微软内部目前也有 5 个为 CPython 开发做出贡献的核心开发人员,包括:Brett Cannon,Steve Dower,Guido van Rossum,Eric Snow 和 Barry Warsaw,他们全部都是 Python 核心开发者社区中的资深人士。

总体看来,不论是资金还是技术,微软对 Python 的支持可谓全面,或许这也促成了 Python 之父 Guido van Rossum 在退休后选择进入微软的部分原因。正如当初他在推特宣布加入微软的时候,最后提了一句“这里(微软)有很多开源”,微软对 Python 的助力、对开源的支持他都看得见。

因而在峰会的演讲中,Guido van Rossum 指出:我选择回到我的根源,这也是微软回馈 Python 的方式。

最后,对于 Python 之父提出的提速 2 倍,你有什么看法吗?欢迎评论区留言!

参考资料:

https://www.zdnet.com/article/python-programming-we-want-to-make-the-language-twice-as-fast-says-its-creator/

https://github.com/faster-cpython/ideas/blob/main/FasterCPythonDark.pdf

RECOMMEND

推荐阅读

01

《Effective Python:编写高质量Python代码的90个有效方法(原书第2版)》 

谷歌资深工程师撰写的经典Python编程进阶图书全新升级!第2版基于Python 3.8,新增30%内容!掌握Pythonic编程方式编写程序。本书以使用场景为主导的精练教学方式,汇聚了90条优秀的实践原则、开发技巧和便捷方案,并以实用的代码范例来解释它们。通过本书,你能够了解到解决关键编程任务所用的最佳方式,并学会编写易于理解、便于维护且利于改进的代码。适合有Python基础的人阅读。

02

《Python 3标准库》

标准库与语言本身同样重要,它好比一个百宝箱,能为各种常见的任务提供完美的解决方案,所以本书是所有Python程序员都必备的工具书!全书以案例驱动的方式讲解了标准库中数百个模块的使用方法和工作原理,简洁易懂,为Python程序员熟练掌握和使用这些模块提供了绝佳指导。

03

《Python代码整洁之道:编写优雅的代码》

本书提供了构建无错误和强壮的Python项目所需的技巧和技术。阅读本书之后,你将会熟练地编写整洁的Python代码,并可以成功地将这些原则应用到自己的Python项目中。


04

《Python进阶编程:编写更高效、优雅的Python代码》

蟒蛇书进阶版,基于Python3.8,Python编程进阶,陈斌、史海峰、李道兵等15位专家力荐,结合源码讲解语法和高级知识,给出编码风格建议

05

《Python学习手册(原书第5版)》

无论你是零基础新手,还是有编程基础的程序员,想快速入门Python并达到可以开发实际项目的水平,本书都会是你的理想选择。每章都对Python语言的关键内容做单独讲解,并且配有章后习题、编程练习及详尽的解答,还配有大量注释的示例以及图表,便于你学习新的技能并巩固加深自己的理解。


扫码关注【华章计算机】视频号

每天来听华章哥讲书

更多精彩回顾

书讯 | 5月书讯(下)| 5天小长假,一起读新书

书讯 | 5月书讯(上)| 5天小长假,一起读新书

资讯 | DB-Engines 5月数据库排名:MySQL或将超越Oracle?

书单 | 8本书助你零基础转行数据分析岗

干货 | 什么是架构?网络架构中都有什么?终于有人讲明白了

收藏 | 终于有人把Scrapy爬虫框架讲明白了

上新 | 【新书速递】架构师是怎样炼成的

活动 | 技术大会 | Gdevops全球敏捷运维峰会 - 广州站

相关文章:

  • 终于有人把任务T、性能P和经验E讲明白了
  • Python之禅:编写优雅Python代码的16个原则
  • “1000名本科生,就产生一名院士!”说实话,我被这所学校凡尔赛到了
  • 企业数字化转型:IT部门的未来!
  • 网络安全杀伤链:权限提升
  • 你所关注的SaaS问题,可能都在这本书中!
  • 一本书掌握Kubernetes核心技术
  • 何谓大数据?
  • 【第57期】中台与数字化转型
  • 我的15年操作系统开源路——RT-Thread 创始人熊谱翔
  • 6月书讯 | 初夏,正好读新书
  • 大咖带你读:《深入实践 DDD:以 DSL 驱动复杂软件开发》
  • 初识 ink!
  • 简述Python中常见的数据结构
  • 终于有人把大数据架构讲明白了
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android开源项目规范总结
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Golang-长连接-状态推送
  • node 版本过低
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Redis 中的布隆过滤器
  • TypeScript迭代器
  • 从重复到重用
  • 搭建gitbook 和 访问权限认证
  • 基于webpack 的 vue 多页架构
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 入门到放弃node系列之Hello Word篇
  • 软件开发学习的5大技巧,你知道吗?
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​VRRP 虚拟路由冗余协议(华为)
  • # 数论-逆元
  • (13):Silverlight 2 数据与通信之WebRequest
  • (day6) 319. 灯泡开关
  • (Note)C++中的继承方式
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)正点原子I.MX6ULL u-boot移植
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***通过什么方式***网吧
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Micro Framework初体验(二)
  • .net mvc 获取url中controller和action
  • .Net 知识杂记
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET开发不可不知、不可不用的辅助类(一)
  • /usr/bin/env: node: No such file or directory
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [.NET]桃源网络硬盘 v7.4
  • [20190401]关于semtimedop函数调用.txt
  • [APIO2015]巴厘岛的雕塑
  • [Asp.net mvc]国际化