最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何提高python程序的性能

    正文概述    2020-01-06   426

    如何提高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程序的性能

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元