美文网首页
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