提高python程序性能的方法

发布时间:2020-08-10 14:11:46 作者:小新
来源:亿速云 阅读:140

这篇文章主要介绍了提高python程序性能的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

Python在性能方面并不擅长,但通过一些提示,您可以尝试提高程序性能并避免不必要的资源浪费。

1.使用局部变量

尝试使用局部变量而不是全局变量使其易于维护,有助于提高性能并节省内存。

使用局部变量替换模块命名空间中的变量,例如ls = os.linesep。一方面,它可以提高程序性能,因为局部变量的搜索速度更快; 另一方面,冗长的模块变量可以用短标识符替换,以提高可读性。

2.减少函数调用的次数

在确定对象类型时,最佳使用isinstance(),次优使用id(),最差type()用于比较。

#Determine whether the variable num is an integer type
type(num) == type(0) #call the function three times
type(num) is type(0) #identity comparison
isinstance(num,(int)) #call the function once

不要将重复操作作为参数放在循环中,以避免重复计算。

#Each loop needs to re-execute len(a)
while i < len(a):
    statement
#Only execute len(a) once
m = len(a)
while i < m:
    statement

要Y在模块中使用函数或对象X,您应该from X import Y直接使用  而不是 import X; X.Y。因此,在使用时Y,您可以减少一次查询(解释器不必先找到X模块,然后Y在X模块的字典中查找)。

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

映射的搜索速度(例如dict等)比条件语句(例如if等)快得多。select-casePython中没有声明。

#if? reach
if a == 1:
    b = 10
elif a == 2:
    b = 20
...

#dict reach,better performance
d = {1:10,2:20,...}
b = d[a]

4.直接迭代序列元素

对于序列(str,list,tuple等),迭代序列元件直接比迭代元件索引更快。

a = [1,2,3]

#Iterate elements 
for item in a:
    print(item)

#Iterate indexes
for i in range(len(a)):
   print(a[i])

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

列表理解将产生整个列表,对大量数据的迭代产生负面影响。

但是生成器表达式没有。它实际上并不创建一个列表,而是返回一个生成器,它在需要时产生一个值(延迟),这对内存更友好。

#Calculate the number of non-null characters in file f
#List analysis
l = sum([len(word) for line in f for word in line.split()])

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

6.首先编译然后调用

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

正则表达式模式匹配是类似的。re.complie() 在执行比较和匹配之前,最好将正则表达式模式编译为正则表达式对象(通过  函数)。

7.模块编程的习惯

模块中最高级别的Python语句(无缩进代码)将在导入模块时执行(是否真的需要执行)。因此,您应该尝试将模块的所有功能代码放入函数中(与主程序相关的功能代码也可以放入  main() 函数中,主程序本身调用该  main() 函数)。

测试代码可以main() 在模块的功能中编写  。__name__ 将在主程序中检测到该值  。如果是' __main__'(表示模块是直接执行的),则main() 调用该  函数进行测试; 如果它是模块的名称(表示模块被调用),则不会执行测试。

感谢你能够认真阅读完这篇文章,希望小编分享提高python程序性能的方法内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!

推荐阅读:
  1. .Net Core中使用ref和Span<T>提高程序性能的方法
  2. 如何提高Python运行效率

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:Oracle中获取TABLE的DDL语句的方法

下一篇:什么是你拨打的用户已暂停服务

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》