天涯论坛

 找回密码
 立即注册
搜索
查看: 30|回复: 6

Python运行速度慢?是你孤陋寡闻了?5个优化办法提速百分百

[复制链接]

2993

主题

330

回帖

9919万

积分

论坛元老

Rank: 8Rank: 8

积分
99199246
发表于 2024-8-17 20:59:10 | 显示全部楼层 |阅读模式

Python运行速度慢?是你孤陋寡闻了?5个优化方法提速百分百

北漂编程2021-04-23 21:47

速度慢

Python之因此速度慢,重点因为动态性和多功能性。

Python 的运行过程是虚拟机读入 Python 代码(文本),词法分析,编译成虚拟机认识的 opcode,而后虚拟机解释 opcode 执行。但这并不是最重点原由,Python import 之后会缓存编译后的 opcode,因此读入、词法分析和编译并占用太多的时间。

那样真正的慢的是哪一步分呢?便是后面的虚拟机解释 opcode 执行的部分。前期的编译是将 Python 代码编译成解释器能够理解的中间代码,解释器再将中间代码翻译成 CPU 能够理解的指令。相比于 AOT(提前编译型语言,例如C)直接编译成设备码,肯定是慢的。

下面是五种已有的方法帮忙加强Python的性能。

Cython

是Python的C语言扩展,cPython是一门单独的语言,专门用来写在Python里面的import用的扩展库。CPython跟Python语法基本一致,而CPython有专门的编译器。

据述,Cython供给有些特性来让代码更有效例如变量类型化,这本质上是C需求的。有些科学计算的包,如scikit-learn依赖Cython的有些特性来保持操作简洁快速。

Pyston

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

Nuitka

是一个Python的替代品,它能够将Python代码转换为C++代码,而后编译为可执行文件,并且经过调用Python的API的方式实现从解析语言到编译语言的转换,在转换到C++的过程中直接运用python的解释器,能够保准100%的语法兼容。

Numba

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

PyPy

选取CPython的简易替代语言时,pypy无疑时最佳之选,与现有Python代码保持高度兼容性,pypy是默认程序运行时的一个很好选取。PyPy运用了Just-in-Time即时编译器,动态编译器与静态编译器区别,利用程序运行的过程的数据进行优化。

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

结语

Python之父说:大部分觉得Python慢的应用都是正确地运用Python。针对CPU密集型的任务有多种办法来提升性能--运用Numpy来做计算,调用外边C代码,以及尽可能避免GIL锁。因为GIL锁日前没法被替代,

彩蛋!!!

必须下面的资料的,还有更加多课件资源的,请私信我“666”领取!!!

私信我还有更加多惊喜哦!!!





上一篇:怎么样运用Python脚本分析CPU的运用状况?
下一篇:Linux中Python应用CPU占用高问题排查
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-25 04:43:04 | 显示全部楼层
外链发布社区 http://www.fok120.com/
回复

使用道具 举报

13

主题

422

回帖

10万

积分

超级版主

Rank: 8Rank: 8

积分
100435
发表于 2024-9-2 12:00:01 | 显示全部楼层
论坛的成果是显著的,但我们不能因为成绩而沾沾自喜。
回复

使用道具 举报

3063

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139046
发表于 2024-10-1 20:23:59 | 显示全部楼层
楼主听话,多发外链好处多,快到碗里来!外链论坛 http://www.fok120.com/
回复

使用道具 举报

3070

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138950
发表于 2024-10-27 09:30:05 | 显示全部楼层
“BS”(鄙视的缩写)‌
回复

使用道具 举报

2986

主题

3万

回帖

9956万

积分

论坛元老

Rank: 8Rank: 8

积分
99569168
发表于 2024-10-28 16:55:33 | 显示全部楼层
回顾历史,我们感慨万千;放眼未来,我们信心百倍。
回复

使用道具 举报

2986

主题

3万

回帖

9956万

积分

论坛元老

Rank: 8Rank: 8

积分
99569168
发表于 2024-10-30 01:20:06 | 显示全部楼层
你的话语如春风拂面,让我心生暖意。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 12:48 , Processed in 0.128875 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.