Python 3.11 稳定版发布啦,速度提升不小

2022-10-25 11:05:47 +08:00
 owtotwo

我对这个版本期待挺久的了,今天瞅了一眼官网发现 Python 3.11.0 刚好更新了!

GIL 似乎还在,速度平均提升了 25%,应该是效率提升幅度最大的一次版本更新了。

9176 次点击
所在节点    Python
47 条回复
julyclyde
2022-10-25 14:16:39 +08:00
pypy 跟上来了吗?
zcreg
2022-10-25 14:18:33 +08:00
恭喜,从慢 200 倍提升到慢 150 倍了
paramagnetic
2022-10-25 14:23:12 +08:00
需要高性能的部分,都是绞尽脑汁写成向量化的形式然后一个 ndarray 丢出去
Kisesy
2022-10-25 14:36:05 +08:00
python 自带一个 redemo.py 文件,打开就是一个测试正则的小工具,不知道为什么在新版里打不开了?
superrichman
2022-10-25 14:47:22 +08:00
现在固定一年一个版本,模块都适配不过来了 https://endoflife.date/python
zictos
2022-10-25 15:07:26 +08:00
还在用 3.7 ,升级要迁移老版本的一些模块,懒得去弄
joApioVVx4M4X6Rf
2022-10-25 16:20:29 +08:00
这么多年了,还是很喜欢用 python ,只希望它能多活几年哈哈哈哈哈
tulongtou
2022-10-25 16:30:07 +08:00
线上已经是 3.10.8 了,开发环境从 rc 就开始用 3.11 了,3.11 等出 2 、3 个小版本之后线上也可以升了。
jjx
2022-10-25 16:47:36 +08:00
比 python 2.7 快还是慢?

现在没有动力迁移, 怕迁了后更慢
873792861
2022-10-25 20:46:46 +08:00
一直用 3.7.9 ,也许再过半年,我买了新的笔记本电脑的时候会更新吧。也许,它会有 4090
FrankHB
2022-10-25 21:00:35 +08:00
@dragondove 依赖 C 什么时候是担保不特别慢的下限了? Rubinius 比 CRuby 快的理由还是尽量用 Ruby 不用 C 实现呢……因为一旦用 C 写死了就无法继续用运行时优化了。
只有非常不依赖切换互操作上下文的任务(比如纯数值计算)才能现实通过本机实现提供像样的性能基线,然而越是这种情况往往越是没理由特别去用你这胶水,所以想要强调性能改进,这种东西是历来需要淡化的,你这哪壶不开提哪壶啊。
dragondove
2022-10-25 21:20:21 +08:00
@FrankHB 越是这种情况越是没理由? python 的科学运算库可不少啊,底层都是 C ,性能相比其他语言也没太差,DL 方向用的最多的语言是哪个不用我说了吧
FrankHB
2022-10-25 21:37:29 +08:00
@dragondove 用户绝对数量再多,也不表示 python 在技术上就足够擅长。很多时候某个领域突然流行某种语言或者熄火了就是偶然的非技术因素,特别是长期有很多非专业人士凑数的、菜鸡互啄的众多交叉领域。严格点说,python 长期以来都是靠用户基数和惯性大来抢占市场,没有单一的应用领域存在护城河。而用户结构的松散导致 python 在外部都很难作为事实标准。
因此想要保持生态建设的、有点危机感的语言核心开发者,是不会很乐意强调这里性能多好的——说到底满足性能需求主要就不是 python 的功劳,只是勉强达到不拖后腿,能让人用得下去,才有机会一时流行;真要极端性能的,也不是没 x 嫌弃和抛弃 python 的。相对来说,他们更希望强调作为“胶水”语言“什么都能做”,然后最好用户忘了它经常可以被低成本地替代,才有余裕争取喘息的机会,继续改进。
要等他们还清在语言设计上的技术债来甩脱对性能的质疑……下辈子吧。
wizardyhnr
2022-10-25 22:10:44 +08:00
remove GIL 好像要把底层的一些 interpreter 实现改写完了才能实现。还要等 Faster CPython 慢慢改。
QA 也说了,主要是针对纯 Python 代码的速度改善,如果是 I/O 密集型或是底层已经用了 C 来提速的,可能看不到明显改善。
chenqh
2022-10-25 22:21:55 +08:00
各位的感觉提升了多少?
hcocoa
2022-10-25 22:35:48 +08:00
晕倒,昨天看还是 rc ,所以编译了 3.10 的,今天就发布了……
u823tg
2022-10-25 23:01:44 +08:00
@FrankHB #33 不知道你清楚的要表达什么。 性能对那个语言来说不重?生态对那个语言不重要?那个语言爆火都是非技术原因,但是爆火形成的生态基本上不可动摇。go 的容器,java 最初的 android ,python 的科学计算 dl ,js 的 web 。c++/c 的底层建筑。 这些都有替代品。问题是大家会放弃早形成的去用另一个语言去重构? 这些语言那个没语言设计上的债。 那个不去提高性能了?
wuwukai007
2022-10-26 12:00:28 +08:00
个人项目一定要用 3.8+ 最好 3.10+ ,性能提升肉眼可见的
victorc
2022-10-26 13:08:09 +08:00
昨天安装了,又回退,在 windows 上,python3.11 安装 jupyter 需要依赖 rust 编译环境,太垃圾了
FrankHB
2022-10-26 14:38:55 +08:00
@u823tg 运行性能对不少语言本来就不重要,够用就行,现实几乎永远都是能节约开发成本更重要。
就 Python 的定位(“胶水”),性能向来就是被弱化的,但有的人被骗着骗着就觉得 Python 性能会成为瓶颈,强行要让 Python 做不擅长做的事以偷懒复用现有 Python 代码和廉价人力,结果就是迫使上游把大量资源投入到这种无底洞去了。现在回过头擦屁股,跟一开始就注意到性能瓶颈而从设计上约束,想实现相似的质量,需要花费的代价完全是两码事。像 Python 3.11 甚至爆改了 frame layout/table based exception handling 这种层面上的东西,结果体验的提升也才:“就这?”这样的费效比在工程上已经很严重了,类似的改进能持续多久属实没法乐观到哪去。当然,感知可能不明显,毕竟能有选择跳车的怕是大部分早就跑了。
至于所谓的生态不可动摇……你是不是对爆火有什么误解?能避免所谓的动摇的,只有被迫形成依赖而替换成本高企的杀手应用或者开发者(如 C++和 COBOL ),再者就是实现上有领先于其它绝大多数竞品的技术壁垒(如 Lua 和 Chez ),或者都有(如 JS )。别的所谓生态,包括现存活跃用户的绝对数量,都没你想象中的那么不可动摇。而大多数语言都是比较尴尬的高不成低不就,(C)Python 也就是用的人特别多而尤其显著而已。(类似的例子……RoR 以前流行了好一阵子,没几年就不冷不热了。)
看你举例的备胎的例子,可以看出替换的可行性的差异感知得相当不明确。比如 C/C++可以整体被替换掉么?技术上可以,但是实际上没人能负担整体替换的成本,光考虑一点——几乎所有主要工业级的 C 、JS 和其它许多主流语言的实现都是依赖 C/C++,谁要动真格儿替换,至少还得把 FFI 之类的烂摊子收拾了,没想清楚替换哪些东西就赶鸭子上架,用不了多久就会出来各种旮旯不兼容停摆。反过来,替换“容器”“科学计算”之类的个别应用领域的东西,只要放弃少数相对来说,放弃少数设施或者人力(如果是造轮子狂魔甚至连放弃都不用),是可以短期内轻易做到避免现有基础设施的兼容性灾难的,所以仍能在合理的资源限制范围内被少数实体有效推进。这种不因为个别人意志而转移的困难程度,就是有和没有护城河的差别。而无论从哪个角度看,Python 都是属于近乎没有的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/889634

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX