python的优化策略

python的优化策略

更多的使用局域变量,少使用全局变量

  • 更容易维护
  • 一方面,本地域搜索起来更快;另一方面用更短的标识太替代过长的变量名

减少使用函数

  • 判断一个对象的种类,优先使用isinstance, id, type,后面的性能更差
  • 不要把表达式放在一个循环中,这会导致额外的开支
1
2
3
4
5
6
7
#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
  • 引入模块具体方法, 最好使用from…import…

利用字典来优化多个if语句的判断

1
2
3
4
5
6
7
8
9
10
#if​ reach
if a == 1:
b = 10
elif a == 2:
b = 20
...

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

直接迭代具体的元素

1
2
3
4
5
6
7
8
9
a = [1,2,3]

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

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

使用迭代器来替换列表等数据

对内存的优化更好

1
2
3
4
5
6
#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())

先编译再调用

在使用eval和exec方法时,可以先利用compile命令编译成二进制命令,效率更好
尤其是在正则模块中,使用compile来编译成表达式,而不是直接去match

养成模块的好习惯

要养成模块的编程方式,执行代码均放在main函数中,这样在import这个文件的时候,不会直接执行

related links