有人跟我抱怨说python太慢了,然后我就将python健步如飞的六大技巧传授给他,结果让他惊呆了,你也想知道这个秘诀吗?这就告诉你:

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

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

多进程并行编程

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

多线程并行编程

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

优化算法时间

法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1)。不同的场景有不同的优化方式,总得来说,一般有分治,分支界限,贪心,动态规划等思想。

例如:set的用法

set的union,intersection,difference操作要比list的迭代要快。因此如果涉及到求list交集,并集或者差的问题可以转换为set来操作。

针对循环的优化

每种编程语言都会强调需要优化循环。当使用Python的时候,你可以依靠大量的技巧使得循环运行得更快。然而,开发者经常漏掉的一个方法是:避免在一个循环中使用点操作。例如,考虑下面的代码:

每一次你调用方法str.upper,Python都会求该方法的值。然而,如果你用一个变量代替求得的值,值就变成了已知的,Python就可以更快地执行任务。优化循环的关键,是要减少Python在循环内部执行的工作量,因为Python原生的解释器在那种情况下,真的会减缓执行的速度。

lowerlist = ['this', 'is', 'lowercase']upper = str.upperupperlist = []append = upperlist.appendfor word in lowerlist:append(upper(word))print(upperlist)#Output = ['THIS', 'IS', 'LOWERCASE']

函数选择

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

使用性能分析工具

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

感谢您的阅读,有两句话挺应景的:找对人办对事,还有话是工欲善其事,必先利其器!利用这六大技巧,你能让python编程健步如飞了吗?更多python编程技巧,尽在达内python培训,敬请关注!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

python编程优化_掌握六大技巧,让python编程健步如飞!相关推荐

  1. python网页优化_李亚涛:python辅助seo优化让你更轻松

    原标题:李亚涛:python辅助seo优化让你更轻松 一个专业的seo其实要学习非常多的知识点,因为SEO涉及的东西比较多: 学习seo要掌握哪些技能呢? 之前我写过一篇文章有给大家介绍:0基础学SE ...

  2. python拼音名_实用小技巧,Python一秒将全部中文姓名转为拼音!

    有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三种Python实现的方法,最后给一个批量操作的代码案例!一.xpinyin 开门见山,Python中文字转拼音可以 ...

  3. python金融编程入门_【量化小讲堂- Python、pandas技巧系列】如何快速上手使用Python进行金融数据分析...

    如何快速上手使用Python进行金融数据分析 引言: 本系列帖子"量化小讲堂",通过实际案例教初学者使用python.pandas进行金融数据处理,希望能对大家有帮助. [必读文章 ...

  4. python手动绘图_建筑师为什么要会python编程?

    点击上方"ikuku消息"可以订阅哦! 作者: 马海东 时间: 20203.19 数字时代建筑师面临的问题 我们生存的这个时代是一个数字化的时代, 建筑师可以通过使用一系列与建筑设 ...

  5. python api讲解_集合api讲解_Python C编程视频课程_Python视频-51CTO学院

    我们为什么要学习Python C编程? 第一个原因,用Python进行项目开发时,很多时候都需要用Python C来扩展Python模块,优化Python脚本的执行效率. 第二个原因,很多项目用C/C ...

  6. python 建筑计算_制图小技巧:巧用Python和ELK瞬间完成总图建筑名称标注

    哎呦,又到了每周一次的制图教室啦.经过前面两次制图教程的分享,相信大家对于白模填色和写实渲染这两种表达方式肯定有了较好的掌握. 那么今天我们就转战制图技巧篇,和童鞋们聊一下总平面图中的建筑名称标注问题 ...

  7. python的pyaudio教程入门_『开发技巧』Python音频操作工具PyAudio上手教程

    『开发技巧』Python音频操作工具PyAudio上手教程 ​ 0.引子 当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包. ...

  8. python音频分析工具_『开发技巧』Python音频操作工具PyAudio上手教程

    『开发技巧』Python音频操作工具PyAudio上手教程 ​ 0.引子 当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包. ...

  9. python处理音频的软件_『开发技巧』Python音频操作工具PyAudio上手教程

    『开发技巧』Python音频操作工具PyAudio上手教程 ​ 0.引子 当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包. ...

最新文章

  1. shell脚本中常见的一些特殊符号和作用详解
  2. Hybris产品主数据的价格折扣维护
  3. python实现批量压缩文件夹
  4. 鸿蒙hms在哪儿更新,原创 华为鸿蒙系统已开始实施!华为EMUI10.1再更新:HMS将决定战略方向...
  5. 《大型数据库技术》MySQL数据库的开发基础
  6. quartz2.3.0(六)job任务异常处理方式
  7. SQL语法集锦一:SQL语句实现表的横向聚合
  8. centos7.2 开发 部署 .net core
  9. 一行代码就能写一个日志打印组件,你信吗?为你揭晓RTOS中日志打印组件的核心
  10. Ubuntu 18.04 安装驱动
  11. 输入日期得出星座c语言,根据日期计算星座
  12. 服务器系统宽带拔号,宽带拨号上网什么意思?宽带拨号上网的操作步骤
  13. Linux系统中的磁盘格式
  14. excel如何拆分表格
  15. js中文首字母排序(二)
  16. DC的逻辑综合与优化
  17. 电路-电源模块汇总(充电器)
  18. 杭州封杀嘀嘀、快的打车的加价功能
  19. 自控考研复习 自我梳理(三) 知识来自网络,纯为总结侵权即删(二阶系统)
  20. codegear的希望

热门文章

  1. 学习Spring Boot:(二)启动原理
  2. messageformat.format() 自定义参数名_DedeCMS的Java版mcms 第四季之一: 自定义插件
  3. hibernate mysql 时间_使用Hibernate和MySQL创建时间戳和最后更新时间戳
  4. php获取ios,IOS 通过描述获取UDID PHP代码版
  5. switch语句可以被代替吗_爬楼梯可以代替跑步吗?
  6. 直流有刷减速电机结构及其工作原理
  7. python的django项目中怎么添加app_django下如何创建多个app并设置urls
  8. python常规异常的基类_Python警告的基类警告类是____。
  9. Android7.0 emui主题,全新EMUI5.0基于Android7.0 天生快,一生快!
  10. 培训学校计算机助教是干嘛的,【助教】的意思是什么?【助教】是什么意思?...