Python在性能方面不卓越,但是使用一些小技巧,可以提高Python程序的性能,避免不必要的资源浪费。

1. 使用局部变量

尽可能使用局部变量替代全局变量,可以是程序易于维护并且有助于提高性能节约成本。

2. 减少函数调用的数量

当需要确定对象类型时,使用isinstance()方法最好,id()次之,type()最差。

为了避免重复计算,不要把重复操作作为参数放入循环中。

3. 使用映射来替换条件搜索

映射(例如dict,等等)的搜索速度比条件语句(例如if,等等)快很多。在Python中没有select-case语句。

4. 直接迭代序列元素

5. 用生成器表达式替换列表解析

列表解析生成整个列表,会对大量数据的迭代产生负面作用。而生成器表达式不会。生成器表达式不会创建一个列表,相反返回一个生成器,在需要的时候生成具体值(延迟的),这种方式对内存友好。

6. 先编译后调用

当使用函数eval()和exec()来执行代码时,最好调用代码对象(通过compile()函数预先编译成字节码)而不是直接调用str,这样可以避免重复编译过程多次和提高程序的性能。 正则表达式模式匹配是类似的。 在执行比较和匹配之前,最好将正则表达式模式编译为正则表达式对象(通过re.complie()函数)。

7. 模块编程的习惯

模块中最高级别的Python语句(无缩进代码)将在导入模块时执行(是否真的需要执行)。 因此,您应该尝试将模块的所有功能代码放入函数中(与主程序相关的功能代码也可以放入main()函数,主程序本身调用main()函数)。 测试代码可以写在模块的main()函数中。 将在主程序中检测__name__的值。 如果是"__main__"(表示模块是直接执行的),则调用main()函数进行测试; 如果它是模块的名称(表示模块被调用),则不会执行测试。

python之提升程序性能的解决方案的更多相关文章

  1. [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能

    [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...

  2. python cProfile分析程序性能

    转自:http://xianglong.me/article/analysis-python-application-performance-using-cProfile/?utm_source=tu ...

  3. Function.apply()在提升程序性能方面的技巧

    我们先从Math.max()函数说起,Math.max后面可以接任意个参数,最后返回所有参数中的最大值. 比如 alert(Math.max(5,8))   //8alert(Math.max(5,7 ...

  4. Python 为了提升性能,竟运用了共享经济

    大家或许知道,Python 为了提高内存的利用效率,采用了一套共用对象内存的分配策略. 例如,对于那些数值较小的数字对象([-5, 256]).布尔值对象.None 对象.较短的字符串对象(通常 是 ...

  5. java程序性能优化

    一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...

  6. 25个增强iOS应用程序性能的提示和技巧(高级篇)(1)

    25个增强iOS应用程序性能的提示和技巧(高级篇)(1) 2013-04-16 14:56 破船之家 beyondvincent 字号:T | T 在开发iOS应用程序时,让程序具有良好的性能是非常关 ...

  7. 25个增强iOS应用程序性能的提示和技巧(中级篇)(3)

    25个增强iOS应用程序性能的提示和技巧(中级篇)(3) 2013-04-16 14:42 破船之家 beyondvincent 字号:T | T 本文收集了25个关于可以提升程序性能的提示和技巧,分 ...

  8. 25个增强iOS应用程序性能的提示和技巧(中级篇)(2)

    25个增强iOS应用程序性能的提示和技巧(中级篇)(2) 2013-04-16 14:42 破船之家 beyondvincent 字号:T | T 本文收集了25个关于可以提升程序性能的提示和技巧,分 ...

  9. 25个增强iOS应用程序性能的提示和技巧--中级篇

    25个增强iOS应用程序性能的提示和技巧--中级篇 标签: ios性能优化内存管理 2013-12-13 10:55 738人阅读 评论(0) 收藏 举报  分类: IPhone开发高级系列(34)  ...

随机推荐

  1. 洛谷p1776宝物筛选

    宝物筛选 多重背包问题 物品数目已知 可以枚举每个物品 当做01背包来做 不过会超时 此时需要二进制拆分来优化 分解成新的物品 再跑一遍01背包即可 //二进制拆分+01背包 //设f[j]表示前i件 ...

  2. bat修改文件内容

    #file.vbsSet fso = Wscript.CreateObject("Scripting.FileSystemObject")set f=fso.opentextfil ...

  3. Java实现添加压缩文件

    package junittest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStr ...

  4. Linux安装vim,解决vim: command not found

    1,输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码: root@server1 [~]# rpm -qa|grep vim vim-enhanced-7 ...

  5. 【数据结构与算法】k-d tree算法

    k-d tree算法 k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索). 应用背景 SIFT算法中做特征点 ...

  6. Python 的文件保存路径

    1.保存在当前代码同级的目录下: 2.保存在代码文件夹外面一层的新文件夹(data文件夹与代码文件夹同级)里: 3.保存在下一级的子文件夹里

  7. CountDownLatch源码

    public class CountDownLatchExample1 { public static void main(String[] args) throws Exception { Exec ...

  8. 浅析PHP框架Laravel最新SQL注入漏洞

    PHP知名开发框架Laravel,之前在官方博客通报了一个高危SQL注入漏洞,这里简单分析下. 首先,这个漏洞属于网站coding写法不规范,官方给了提示: 但官方还是做了修补,升级最新版本V5.8. ...

  9. 使用scrapy框架做武林中文网的爬虫

    一.安装 首先scrapy的安装之前需要安装这个模块:wheel.lxml.Twisted.pywin32,最后在安装scrapy pip install wheel pip install lxml ...

  10. 卸载webpack,降低版本

    卸载:npm uninstall webpack -g 重新安装:npm install webpack@3.7.1 -g