美文网首页
Python性能优化-推荐惯用法

Python性能优化-推荐惯用法

作者: Franchen | 来源:发表于2019-02-15 23:37 被阅读0次
    Python的性能

    Python预算效率低的原因

    • 弱类型 变量所指向对象的类型在运行时才确定,编译器无法优化。
    • 一切都是对象 每个对象都需要维护引用计数,增加额外工作。
    • 属性查找 访问对象的某个属性是非常复杂的过程。python属性查找
    • 解释进行 不支持 JIT(just in time compiler)
    • GIL 默认CPython执行环境下的Global Interpreter Lock GIL详解
    • 垃圾回收 每次垃圾回收的时候都会中断正在执行的程序。

    优化的方法一般是基于profile,见 Python性能优化-Profile
    但作为Python开发者应该用Pythonic(Python推荐的惯用法)以优化代码。

    Pythonic 推荐惯用法

    Pythonic 就是以清晰、可读的惯用法应用Python 理念和数据结构。

    • 类Switch语法-dict实现
    # 非Pythonic
    if a == v1:
      return r1
    elif a == v2:
      return r2
    elif a == v3:
      return r3
    else
      return default
    
    # Pythonic
    return {v1: r1, v2: r2, v3: r3}.get(a, default)
    
    • 字符格式化
    print 'Hello {name}, your age is {age} !'.format(name = 'Franchen', age = '18')
    
    • 遍历List或Set
    for item in v_list:
      pass
    for item in v_set1:
      pass
    
    • 两变量值交换
    a, b = b, a
    
    • 判断变量在两值之间
    1 < a < 10
    
    • 判断是否同一对象,用is
    if o1 is o2:
      pass
    
    • 判断一个对象是否在集合中,使用set而非list
    if val in set(v_list):
       pass
    
    • for else 和 while else语句判断是否命中
    eg:
    for i in range(10):
      if f(i) == g(i):
         print 'When i is {v}, f(i) == g(i)'.format(v = i)
         break
    else:
      print 'f(i) != g(i)'
    
    • 文件处理
    with open(file, mode) as f:
      pass
    
    • 大量字符的累加,使用join操作
    ''.join(str_list) # 相当 str1 + str2 + str3 ...
    ','.join(str_list) # 相当 str1 + ',' + str2 + ',' + str3 ...
    

    待续

    相关文章

      网友评论

          本文标题:Python性能优化-推荐惯用法

          本文链接:https://www.haomeiwen.com/subject/ymlveqtx.html