说说提高Python运行效率的技巧?

公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!

小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。

废话不多说,开始今天的题目:

问:说说提高Python运行效率的技巧?

答:不喜欢Python的人经常会吐嘈Python运行太慢。今天具体来说一下提高python执行效率的方法,下面给大家介绍10种方法 。

1、使用局部变量
尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存。
一方面可以提高程序性能,局部变量查找速度更快;另一方面可用简短标识符替代冗长的模块变量,提高可读性。

2、使用较新的Python版本
Python已经更新了很多个版本,每个版本的Python都会包含优化内容,使其运行速度优于之前的版本,所以大家记得经常更新版本哦!

3、先编译后调用
使用eval()、exec()函数执行代码时,最好调用代码对象(提前通过compile()函数编译成字节码),而不是直接调用str,可以避免多次执行重复编译过程,提高程序性能。

正则表达式模式匹配也类似,也最好先将正则表达式模式编译成regex对象(通过re.complie()函数),然后再执行比较和匹配。

4、采用生成器表达式替代列表解析
列表解析会产生整个列表,对大量数据的迭代会产生负面效应。而生成器表达式则不会,其不会真正创建列表,而是返回一个生成器,在需要时产生一个值(延迟计算),对内存更加友好。

5关键代码使用外部功能包

使用 C/C++ 或机器语言的外部功能包处理时间敏感任务,可以有效提高应用的运行效率。这些功能包往往依附于特定的平台,因此你要根据自己所用的平台选择合适的功能包 。比如下面四个功能包:Cython、Pylnlne、PyPy、Pyrex 。

6在排序时使用键

Python 含有许多古老的排序规则,这些规则在你创建定制的排序方法时会占用很多时间,而这些排序方法运行时也会拖延程序实际的运行速度。最佳的排序方法其实是尽可能多地使用键和内置的 sort() 方法。

7优化算法时间

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

例如:set的用法

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

8循环优化

每种编程语言都会强调需要优化循环。当使用Python的时候,你可以依靠大量的技巧使得循环运行得更快。

技巧 1:减少循环内部不必要的计算

技巧 2:嵌套循环中,尽量减少内层循环的计算

技巧 3:尽量使用局部变量

技巧 4:使用 join() 连接字符串

9交叉编译你的应用

计算机其实并不理解用来创建现代应用程序的编程语言,计算机理解的是机器语言。所以我们可以用Python语言编写应用,再以C++这样的语言运行你的应用,这在运行的角度来说,是可行的。

Nuitka是一款有趣的交叉编译器,能将你的Python代码转化成C++代码。这样,你就可以在native模式下执行自己的应用,而无需依赖于解释器程序。你会发现自己的应用运行效率有了较大的提高,但是这会因平台和任务的差异而有所不同。

10充分利用多核CPU的优势

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

1、 多进程并行编程

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

2、 多线程并行编程

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

本文是整合了全网比较好的10种提高Python运行效率的技巧,希望可以帮助到大家!

如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

(0)

相关推荐

  • 一篇文章带你解析Python进程

    来源|本文经授权转载自Python爬虫与数据挖掘 前言 进程,一个新鲜的字眼,可能有些人并不了解,它是系统某个运行程序的载体,这个程序可以有单个或者多个进程,一般来说,进程是通过系统CPU 内核数来分 ...

  • 一分钟了解 Python 中的并行计算

    Python 以极高的开发效率著称,而运行速度则"没那么快". 虽然,在现代计算机体系架构下,系统的运行效率并不完全取决于编程语言,但程序员仍有可能从编程技巧着手,让自己的代码&q ...

  • Python代码加速的10个最佳实用技巧

    如果有人问你 --"现在世界上增长最快的编程语言是什么?"答案很简单.那就是 Python.由于其简单的语法和丰富的库,它在世界范围内受到欢迎.现在,你几乎可以用python做任何 ...

  • 用Python创建你第一个GIS程序[5]:多进程解决线程堵塞

    前言:在上一章中,我们将前后端连接起来,算是真正把程序给创建了出来.但是存在一个问题:当你点击"运行"按钮运行程序后,再用鼠标点击拖动 GUI 界面就会卡死... 线程堵塞 当点击 ...

  • Python和Java有何不同?这些竟然不知道!

    Python.Java都是当下主流的编程语言,深受广大程序员的喜欢.但是很多人在学习编程的时候,总会拿Python和Java对比,甚至难以判断是学习Python还是Java,那么Python和Java ...

  • Python 生成器里面的 return 有什么用?

    大家好,我是安果! 最近,在交流群里,有一位小伙伴问了这样一个问题: def gen_data(num):     if num > 10:         for i in range(num ...

  • 第48天:初识 Python 多线程

    我们知道,多线程与单线程相比,可以提高 CPU 利用率,加快程序的响应速度. 单线程是按顺序执行的,比如用单线程执行如下操作: 6秒读取文件19秒处理文件15秒读取文件28秒处理文件2 总共用时 28 ...

  • 不懂性能优化,再强的计算机也白玩

    来源:Python 技术「ID: pythonall」 Python 的优秀有目共睹,不过说的性能,还真比不了 Java.C.Go,有没有提升性能的技巧或方法呢?今天我们一起学习下提升 Python ...

  • C++和Python有什么区别?

    C++和Python同属于编程语言,两者应用领域不同,因此很多人在学习的时候就会纠结选择Python还是C++.那么C++和Python有什么区别?学习哪个比较好呢?我们通过这篇文章了解一下吧. C+ ...

  • 如何才能提高书法的运笔技巧?

    标星"★""书法功课",不再错过精彩文章✔ 小楷,致敬母亲✔ 这里着重谈谈书法的发笔技巧. '要笔锋无处不到,须是用逆字诀.勒则锋右管左,努则锋下管上,皆是也, ...

  • 提高二胡快弓技巧的方法,快弓训练四件套

    提高二胡快弓技巧的方法,快弓训练四件套

  • 怎么写字好看?在短期内快速提高书法水平的技巧,是有效练字方法

    谁生下来也不会写一手漂亮字,只是有人去练了,有人没有.我个人的经验是从硬笔书法开始练,有点感觉以后练练钢笔字.为什么会有人说不要临摹呢,那字帖是干嘛使的?!不要害怕临摹以后就没有自己的风格了,基础有了 ...

  • 怎样提高捉鸡麻将技巧

    捉鸡麻将其实就是川麻的一种演变.而贵阳捉鸡麻将具体又分好几种玩法.比如带乌骨鸡8筒.上下鸡.金银鸡.大牌自摸翻倍等等玩法.具体规则问一下会的人,很快就能明白玩法. 但贵阳捉鸡麻将要玩好却又不是那么简单 ...

  • 必须知道的python专属骚技巧25例

    本文我总结了25个python专属骚操作,实属提高效率/同事吹牛只利器,确定不收藏吗? 一.原地交换 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法 x, y = 10, 20 ...

  • 股票竞价打板提高胜率的下单技巧(案例图解)

    如何在集合竞价填单,这是个学问.假如你9:15填单,结果看到股价越来越低,等你犹豫的时候已经过了9:20,那撤单已经来不急了,所以最好的填单时间就是9:25之前,时间越接近9:25越好.

  • 怎样提高中阮演奏技巧及演奏速度

    长按二维码,即可购买 (来源:万苏的博客) 阮这件乐器是我国自汉代时已经出现的,但人们比较熟悉的还是"五四"以来为充实乐队弹拨乐组中低音区而再度兴起的一种伴奏乐器.建国后,阮才得到 ...

  • 经验分享:中考提高成绩的六大技巧

    技巧一:找漏洞.补漏洞.学生如何找自己学科上的漏洞呢?书中提出在预习时找漏洞.我素来不重视预习,一节数学课就几个知识点,遇到讲解几何定理,学生课前就将其背诵下来,课堂上让学生归纳定理,如果学生流利的背 ...

  • 万赞干货 | 提高英语听力神秘技巧

    现在下定决心努力练习听力会不会来不及? 如果今天你不决心改变,明天你也不会改变,要改变,就从现在.当下.2020年的 4 月 11 日开始. 不要指望向明天赊账,大脑会对能完成目标的可能性感到兴奋,错 ...