- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
importmatplotlib.pyplotasplt
importseabornassns
importwarnings
warnings.filterwarnings(ignore)
#设置中文字体
%load_extcython
%matplotlibinline
一、Python为什么运行效率低?
第一:python是动态语言
python进行编程的时候,不像在java或者c++中,需要设置变量的类型,如字符串类型,整型,浮
点型等等。在代码的编译过程中,需要知道变量的类型,从而对不同的类型做不同的处理,如变量
该占多少内存、变量之间能否进行运算等等。但是,在编写python代码的过程中,并不会声明其
类型,所以需要python编译器去主动判断类型,如是否是个字符串还是个整数等等。而这一过
程,要耗费大量的计算资源。
第二:python是解释执行
python是一种解释性语言,python在执行代码的时候,会在后台启动一个编译器,这个编译器的
目的在于将源代码编译成字节码。一般,在编译成字节码之后,python虚拟机会使用这个字节码
与硬件进行交互,完成代码的执行任务。由于程序和硬件之间要途径虚拟机来进行交互,所以效率
会比较低。
第三:python中一切都是对象。
每个对象都需要维护引用计数,增加了额外的工作。
第四:全局解释锁(GIL)
因为GIL,python中的多线程并不能真正的并发。如果是在IObound的业务场景,这个问题并不
大,但是在CPUBOUND的场景,这就很致命了。所以笔者在工作中使用python多线程的情况并
不多,一般都是使用多进程(prefork),或者在加上协程。即使在单线程,GIL也会带来很大的
性能影响,因为python每执行100个opcode(默认,可以通过sys.setcheckinterval()设置)就会
尝试线程的切换,具体的源代码在ceval.c::PyEval_EvalFrameEx。
第五:内存管理
这个可能是所有具有垃圾回收的编程语言的通病。python采用标记和分代的垃圾回收策略,每次
垃圾回收的时候都会中断正在执行的程序,造成所谓的顿卡。
第六:高级数据结构、函数和库
Python提供了许多高级数据结构(如列表、字典、集合),这些结构提供了便利的抽象,但它们
的底层实现可能涉及复杂的内存操作;某些内置函数或外部库和库可能没有针对特定任务进行优
化。
二、优化Python代码执行速度的方法
1.使用内置数据类型和函数:Python的内置数据类型和函数通常经过高度优化,使用它们可以显著提高
代码的执行速度。
2.减少全局变量的使用:全局变量的访问速度通常比局部变量慢,因此应尽量减少全局变量的使用。
3.使用列表推导式和生成器:列表推导式和生成器可以简洁地表达复杂的循环逻辑,并且通常比传统的
循环结构更快。
4.利用向量化操作:对于数值计算任务,尽量使用NumPy、Pandas等库的向量化操作,避免使用
Python的循环结构。
5.并行计算:虽然Python的GIL限制了多线程的并行执行,但可以使用多进程、异步IO或分布式计算
框架(如Dask、Celery)来实现并行计算。
6.代码分析和性能测试:使用cProfile、timeit等工具对代码进行性能分析和测试,找出性能瓶颈并进行
优化。
7.使用JIT编译器:如PyPy这样的JIT编译器可以在运行时将Python代码编译成机器码,从而提高执
行速度。
8.优化算法和数据结构:选择更高效的算法和数据结构可以显著减少计算量,提高代码的执行速度。
9.减少外部库和依赖:尽量使用Python标准库中的功能,减少外部库和依赖的使用,以减少潜在的性
能问题。
10.使用Cython或PyOpenCL:对于需要高性能计算的部分,可以使用Cython将Python代码转换为
C代码进行编译,或者使用P
您可能关注的文档
- 《荷花颂讲解》课件.ppt
- 2025年井下瑞雷波探测仪项目可行性建设方案.docx
- 2025年沈阳市东陵区(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年井下瑞雷波探测仪项目建设总纲及方案.docx
- 2025年富顺县(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年影视文化产业的数字化版权运营与金融创新可行性研究报告.docx
- 2025年富民县(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年给予树标准教案及教学反思(.pptx
- 2025年呼和浩特市玉泉区(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年课题《采菱 》教学标准课件.ppt
- 2025年岢岚县(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年常州市天宁区(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年零售业共享经济与自动售货机考核试卷 .pdf
- 2025年蒙自县(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年富县(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年齐齐哈尔市梅里斯达斡尔族区(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年呼和浩特土默特左旗市(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年克东县(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年常州市武进区(中小学、幼儿园)教师招聘考试题库及答案解析.docx
- 2025年沈阳市皇姑区(中小学、幼儿园)教师招聘考试题库及答案解析.docx
最近下载
- 高斯小学奥数含答案二年级(下)第06讲-扫雷游戏.pdf VIP
- 《景区运营与管理实务》课件——旅游景区管理要素.pptx VIP
- GB50171-2012 电气装置安装工程 盘、柜及二次回路接线施工及验收规范.pdf VIP
- 《工程制图》教学教案(1-10次课,合计50次课).doc VIP
- 统编版道德与法治九年级上册第三单元《文明与家园》作业设计.docx
- 高斯小学奥数含答案二年级(下)第06讲扫雷游戏.pdf VIP
- 旅游景区运营管理手册(制度)[257页].doc VIP
- 中南大学ORcad实验报告(程嘉洲版实验2到实验7)完美步骤,完美报告!.doc
- 部编版九年级道德与法治第四单元《文明与家园》作业设计.docx
- 《工程制图》教学教案(11-20次课,合计50次课).doc VIP
文档评论(0)