专栏首页程序员的知识天地6大技巧,让Python编程健步如飞!

6大技巧,让Python编程健步如飞!

有人跟我抱怨说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原生的解释器在那种情况下,真的会减缓执行的速度。

函数选择

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

使用性能分析工具

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python爬虫入门,8个常用爬虫技巧盘点

    编程对于任何一个新手来说都不是一件容易的事情,Python对于任何一个想学习的编程的人来说的确是一个福音,阅读Python代码像是在阅读文章,源于Python语...

    一墨编程学习
  • 为什么要学Python编程 到底Python值不值得学

    为什么要学Python编程?到底Python值不值得学​?Python在软件质量控制、提升开发效率、可移植性、组件集成、丰富库支持等各个方面均处于先进地位。同样...

    一墨编程学习
  • Python程序员必备的30个编程技巧

    直接交换2个数字的位置 Python 提供了一种直观的方式在一行代码中赋值和交换(变量值)。如下所示:

    一墨编程学习
  • Python入门教程:超详细1小时学会Python

    安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行。

    马哥linux运维
  • Python入门教程:超详细1小时学会Python

    1.Hello world 安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行。 我们写下...

    小小科
  • 浅谈热议话题小程序

           小程序最大的优势当然就是方便,无孔不入!它体验更棒、开发成本很低,周期也短。更关键的是,小程序分享到消息对话框的面积也更大,分享出去更快,能玩的功...

    中微信通
  • 干货丨小程序功能解读白皮书

    上述新增能力,主要集中在小程序的功能、小程序的管理以及小程序的用户管理。小程序在不断优化用户体验的同时,也在不断为第三方介入提供更多的接口和便利。当然每次新能力...

    齿轮易创说互联网
  • Python基础语法 原

    在Python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。

    云飞扬
  • 一点微小的程序

    今年年初的时候,说好要颠覆 App 的小程序上线了。不过几个月来一直不温不火。最近估计实在挂不住了,小程序又开放了一些功能权限。 正好前阵子有不止一个同学跟我提...

    Crossin先生
  • 小程序公开课 | 学会这些,你就知道如何推广小程序了!

    社群分享主要有两种:一种是群小程序,另一种是聊天小程序。以卡片形式出现在微信聊天界面中,同时在聊天详情界面中也能找到小程序的日寇,点击后就能看见你与好友、群成员...

    用户1745481

扫码关注云+社区

领取腾讯云代金券