提高Python运行效率的6大技巧!

提高Python运行效率的6大技巧!

Python是一门优秀的语言,它能让你在短时间内通过极少量代码就能完成许多操作。不仅如此,它还轻松支持多任务处理,比如多进程。

不喜欢Python的人经常会吐嘈Python运行太慢。但是,事实并非如此。作为程序猿就是希望如何优化代码,精简代码。今天黑马程序员Python学科就为大家精选6条python代码优化建议。

因为GIL的存在,Python很难充分利用多核CPU的优势。但是,可以通过内置的模块multiprocessing实现下面几种并行模式:


1、 多进程并行编程


对于CPU密集型的程序,可以使用multiprocessing的Process,Pool等封装好的类,通过多进程的方式实现并行计算。但是因为进程中的通信成本比较大,对于进程之间需要大量数据交互的程序效率未必有大的提高。


2、 多线程并行编程


对于IO密集型的程序,multiprocessing.dummy模块使用multiprocessing的接口封装threading,使得多线程编程也变得非常轻松(比如可以使用Pool的map接口,简洁高效)。分布式:multiprocessing中的Managers类提供了可以在不同进程之共享数据的方式,可以在此基础上开发出分布式的程序。 不同的业务场景可以选择其中的一种或几种的组合实现程序性能的优化。


3、 优化算法时间


算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1)。不同的场景有不同的优化方式,总得来说,一般有分治,分支界限,贪心,动态规划等思想。
例如:set的用法
set的union,intersection,difference操作要比list的迭代要快。因此如果涉及到求list交集,并集或者差的问题可以转换为set来操作。

4、 针对循环的优化


每种编程语言都会强调需要优化循环。当使用Python的时候,你可以依靠大量的技巧使得循环运行得更快。然而,开发者经常漏掉的一个方法是:避免在一个循环中使用点操作。例如,考虑下面的代码:
每一次你调用方法str.upper,Python都会求该方法的值。然而,如果你用一个变量代替求得的值,值就变成了已知的,Python就可以更快地执行任务。优化循环的关键,是要减少Python在循环内部执行的工作量,因为Python原生的解释器在那种情况下,真的会减缓执行的速度。
lowerlist = ['this', 'is', 'lowercase']
upper = str.upper
upperlist = []
append = upperlist.append
for word in lowerlist:
append(upper(word))
print(upperlist)
#Output = ['THIS', 'IS', 'LOWERCASE']


5、 函数选择


在循环的时候使用xrange而不是range;使用xrange可以节省大量的系统内存,因为xrange()在序列中每次调用只产生一个整数元素。而range()將直接返回完整的元素列表,用于循环时会有不必要的开销。在python3中xrange不再存在,里面range提供一个可以遍历任意长度的范围的iterator。


6、 使用性能分析工具


除了上面在ipython使用到的timeit模块,还有cProfile。cProfile的使用方式也非常简单:python–m cProfile filename.py,filename.py是要运行程序的文件名,可以在标准输出中看到每一个函数被调用的次数和运行的时间,从而找到程序的性能瓶颈,然后可以有针对性地优化。


关注公众账号

飞马会


往期福利关注飞马会公众号,回复对应关键词打包下载学习资料;回复“入群”,加入飞马网AI、大数据、项目经理学习群,和优秀的人一起成长!

微软大牛人工智能系列课

(扫码试听或订阅)



m.qlchat.com/live/chann (二维码自动识别)



回复 数字“1” 下载从入门到研究,人工智能领域最值得一读的10本资料(附下载)

回复 数字“2” 机器学习 & 数据科学必读的经典书籍,内附资料包!

回复 数字“3” 走进AI & ML:从基本的统计学到机器学习书单(附PDF下载)

回复 数字“4” 了解人工智能,30份书单不容错过(附电子版PDF下载)

回复 数字“6” AI人工智能:54份行业重磅报告汇总(附下载)

回复 数字“7” TensorFlow介绍、安装教程、图像识别应用(附安装包/指南)

回复 数字“10” 麦肯锡160页报告:2030年全球将可能8亿人要被机器抢饭碗

回复 数字“12” 小白| Python+Matlab+机器学习+深度神经网络+理论+实践+视频+课件+源码,附下载!

回复 数字“14” 小白| 机器学习和深度学习必读书籍+机器学习实战视频/PPT+大数据分析书籍推荐!

回复 数字“16” 100G Python从入门到精通!自学必备全套视频教程+python经典书籍!

回复 数字“17” 【干货】31篇关于深度学习必读论文汇总(附论文下载地址)

回复 数字“18” 526份行业报告+白皮书:AI人工智能、机器人、智能出行、智能家居、物联网、VR/AR、 区块链等(附下载)

回复 数字“19” 800G人工智能学习资料:AI电子书+Python语言入门+教程+机器学习等限时免费领取!

回复 数字“20” 17张思维导图,一网打尽机器学习统计基础(附下载)

回复 数字“22” 吴恩达新书,教你构建机器学习项目:《Machine Learning Yearning》

回复 数字“23” 机器学习:怎样才能做到从入门到不放弃?(内含福利)

回复 数字“24” 限时下载 | 132G编程资料:Python、JAVA、C,C++、机器人编程、PLC,入门到精通~

回复 数字“25” 限资源 | 177G Python/机器学习/深度学习/算法/TensorFlow等视频,涵盖入门/中级/项目各阶段!

回复 数字“26” 人工智能入门书单推荐,学习AI的请收藏好(附PDF下载)

回复 数字“27” 资源 | 吴恩达斯坦福CS230深度学习课程全套资料放出(附下载)

回复 人工智能 下载《FMI人工智能与大数据峰会嘉宾演讲PPT》

回复 AI 江湖 下载《十大AI江湖领域》

回复 ML实践 下载《机器学习实践经验指导(英文版)》

回复 DL论文 下载《深度学习100篇以上论文资料》

回复 算法 下载《数据挖掘十大经典算法》

回复 6.10 下载《6.10饿了么&飞马网项目管理实践PPT》

发布于 2018-07-06 09:53