python使方法执行10次_Python提升程序性能的七个手段

1. 使用局部变量

尽量使用局部变量代替全局变量: 便于维护, 也可以避免不必要的资源浪费

使用局部变量替换模块名字空间的变量, 例如: ls = os.linesep. 一方面给可以提高程序性能, 局部变量查找速度更快; 另一方面可以采用简短标识符代替冗长的模块变量, 提高可读性.

2. 减少函数调用次数

对象类型判断时, 采用欧冠isinstance()最优, 采用对象类型身份(id())次之, 采用对象值(type())最次之.

#判断变量num是否为整数类型

type(num) == type(0) #调用三次函数

type(num) is type(0) #身份比较

isinstance(num,(int)) #调用一次函数

不要将重复操作的内容作为参数放到循环条件中, 避免重复运算.

#每次循环都需要重新执行len(a)

while i

statement#len(a)仅执行一次

m =len(a)while i

statement

如果使用某块X的某一个函数或者对象Y, 应该直接使用from X import Y进行引用, 而不是import X; X.Y进行使用. 这样在使用Y时, 可以减少一次查询(解释器不必首要找到X模块, 然后再X模块的字典中查找Y).

3. 采用映射替代条件查询

映射(比如dict等)的搜索速度远快于条件语句(if等).. python中也没有select-case语句.

#if查找

if a == 1:

b= 10

elif a == 2:

b= 20...#dict查找,性能更优

d = {1:10,2:20,...}

b= d[a]

4. 直接迭代序列元素

对序列(str, list, tuple等), 直接迭代序列元素, 比迭代元素的索引速度要快.

a = [1,2,3]#迭代元素

for item ina:print(item)#迭代索引

for i inrange(len(a)):print(a[i])

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

列表解析(list comprehension), 会产生整个列表, 对大量数据的迭代会产生负面效应.

而生成器表达式则不会, 其不会真正的创建一个列表, 而是返回一个生成器, 在需要时产生一个值(延迟计算), 对内存更加友好.

#计算文件f的非空字符个数#生成器表达式

l = sum([len(word) for line in f for word inline.split()])#列表解析

l = sum(len(word) for line in f for word in line.split())

6. 先编译后调用

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

正则表达式模式匹配也类似, 也最好先将正则表达式模式编译成regex对象(通过re.complie

()函数), 然后再执行比较和匹配

7. 模块编程习惯

模块中的最高级Python语句(无缩进的代码)会在模块导入(import)时执行(不论其是否真的有必要执行). 因此, 应尽量将模块所有的功能代码放到函数中, 包括主程序相关的代码也可以放到main()函数中, 主程序本身调用main()函数.

可以在模块的main()函数中书写测试的代码. 在主程序中, 检测name的值, 如果为"main"(表示模块是被直接执行, 则调用main()函数进行测试; 如果为模块名字(表示模块是被调用),则不进行测试.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java sftp mget_总结三种Shell脚本编程中避免SFTP输入密码的方法

最近编程中用到sftp上传文件,且需要用crontab预设定时上传事件。而sftp不同于ftp,没有提供选项如 -i 可以将密码直接编码进程序。使用sftp指令,会自动请求用户输入密码。总结一下可以避免sftp输入密码的三种方式:1. lftp方式LFTP是…

ad域不去用frs_Windows Server 2008搭建AD域控服务器 - 小王同学!

AD域安装过程安装DNS服务器一路下一步这里选安装到这里DNS服务器安装成功,可以在主页面看到我们安装的角色安装DNS服务器后我们需要重启服务器安装AD域服务新增AD域服务角色一路下一步——安装即可两条安装成功提示,重启服务器角色中选择AD域服务&#x…

IE下及标准浏览器下的图片旋转(二)—— Canvas(2)

文章过长,一篇无法保存 IE下及标准浏览器下的图片旋转(二)—— Canvas(1) 同样,作为最后,我们使用使用jquery也为canvas写个旋转demo: javascript: $(function () { …

大数据技术 思维导图

learn from 从0开始学大数据(极客时间)

python 管理windows客户端_在远程windows客户端上执行python脚本

我正在使用paramiko在远程windows服务器上执行命令。我能够执行dir之类的命令并提取输出,但是执行python脚本似乎失败了。不会引发错误消息。在下面是我的代码片段:def ssh_connect(ip,user,pwd):ssh paramiko.SSHClient()ssh.set_missing_host_key_pol…

日期范围 java_JavaJoDA时间-实现日期范围迭代器

这是一些让你开始的东西。你可能会想一想到底是要包容性还是排他性,等等。import org.joda.time.*;import java.util.*;class LocalDateRange implements Iterable{private final LocalDate start;private final LocalDate end;public LocalDateRange(LocalDate start,LocalDat…

win10win键无反应_台式电脑开机主机没反应怎么办 电脑开机主机没反应解决【详解】...

按了开机按钮后我的台式电脑主机还是没反应,怎么办呢?下面由小编给你做出详细的台式电脑开机主机没反应解方式介绍。(此文主要针对台式电脑做介绍)台式电脑开机主机没反应解方式一:拔掉电源线 然后重复的按开机键5-10下 进行放静电操作 然后再插上电源线…

hadoop 单机伪分布式安装步骤

文章目录1. 安装 Java2. 配置SSH无密码登录3. 下载 hadoop4. 配置环境变量5. 报错处理参考环境 Centos7参考:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.htmlhttps://blog.csdn.net/bingduanlbd/article/details/5187…

Eclipse 为jar包加入 Java Source和Javadoc(如何向Eclipse中导入源码和doc)

: 当我们在MyEclipse中加入Struct,只是引入了jar包,这时使用jar包里面的类,是无法看到源码的,看到的只是这样 是反编译后的一些东西 加入源码 那么如果看到源码呢,就需要导入了 找到这个类对应的jar包,下载…

ppt生成器_小米发布会ppt词云怎么做的

导语在幻灯片中使用文字云或者文字墙是一件非常酷的事情,之前我们看过的很多发布会PPT都有出现文字云设计。利用文字云工具就告别麻烦的排版,让ppt效果更专业,新颖小米发布会ppt 微词云我们先看下几种文字云案例罗振宇《时间的朋友》跨年演讲…

Java实验方法参数传递与递归_4.3类的结构之二:方法(return,重载,可变个数形参,值传递,递归)...

类的设计中,两个重要结构之二:方法* 方法:描述类应该具有的功能。* 比如:Math类:sqrt()\random()\ ..* Scanner类:nextXxx() ..* Arrays类:sort()\binarySearch()\toString()\equals()\..* * 1.…

钢琴块2电脑版_快陪练教师端电脑版下载_快陪练教师端pc版免费下载[在线教学]...

快陪练教师端电脑版是一款钢琴陪练教师的在线教学软件,快陪练教师端电脑版支持语音互动功能。快陪练教师端电脑版可以帮助老师在线教孩子学习钢琴,软件可以让用户清晰地看到学生弹钢琴时的指法,并及时为其纠正不正确的指法,它引入…

LeetCode 1105. 填充书架(DP)

文章目录1. 题目2. 解题1. 题目 附近的家居城促销,你买回了一直心仪的可调节书架,打算把自己的书都整理到新的书架上。 你把要摆放的书 books 都整理好,叠成一摞:从上往下,第 i 本书的厚度为 books[i][0]&#xff0c…

python字符串前面加上序号_简单了解python字符串前面加r,u的含义

这篇文章主要介绍了简单了解python字符串前面加r,u的含义,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下u/U:表示unicode字符串不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicod…

java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

一、通过配置文件控制静态资源的热部署在配置文件 application.properties 中添加:#表示从这个默认不触发重启的目录中除去static目录spring.devtools.restart.excludeclasspath:/static/**或者使用:#表示将static目录加入到修改资源会重启的目录中来spr…

判断深度学习模型的稳定性_全自动搭建定制化深度学习模型

EasyDL服务自动化生成与部署EasyDL定制化训练和服务平台基于百度业界领先算法,旨在为用户量身定制业务专属AI模型。通过灵活的配置,用户可以将模型发布为公有云API、设备端离线SDK、本地服务器部署包、软硬一体方案等多种输出方式的AI服务。目前&#xf…

Android应用程序消息处理机制(Looper、Handler)分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6817933 Android应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队例,应用程序的主线程不断地从这个消息 队例中…

冒泡排序和选择排序区别_你以为只是简单的排序?(一)

一直在犹豫要不要写排序的文章,因为真的烂大街了。可是一旦细看,还真是很多值的思考的地方,所以还是选择记录一下以下完整代码,均可从这里获取https://github.com/Rain-Life/data-struct-by-go/tree/master/sort排序算法效率分析了…

java hash 分库分表_分库分表方案

摘自:Java技术栈一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以…

verilog设计简易正弦波信号发生器_信号发生器工作原理是什么

信号发生器是指产生所需参数的电气测试信号的仪器。根据信号波形可分为四类:正弦信号、函数(波形)信号、脉冲信号和随机信号发生器。那么信号发生器工作原理是什么?听听广州荣鑫电子怎么说。信号发生器又称信号源或振荡器&#xf…