python怎么提升程序运行效率

1、选择合适的数据结构
python中有四种内置的数据结构,分别是列表List、元组Tuple、集合Set、字典Dict
其中大多数开发人员在所有情况下都是使用列表,这是不正确的,应该针对不同的任务使用合适的数据结构。
2、善于使用python强大的内置函数和第三方库
多个if else条件判断时,可以把最有可能先发生的条件放在前面,这样可以减少程序判断的次数,提高效率
常用的内置函数sum()、len()、map()、max()、join()等
3、使用多进程、多线程
4、少用循环,可以用列表推导式、迭代器、filter()等代替循环,减少循环次数,精确控制,不浪费CPU

## 返回n以内的可以被7整除的所有数字。

# ❌ 正常人能想到的方法:
@timeshow
def f_loop(n): 
    L=[]
    for i in range(n):
        if i % 7 ==0:
            L.append(i)
    return L

#  ✅ 列表推导式
@timeshow
def f_list(n):
    L = [i for i in range(n) if i % 7 == 0]
    return L

# ✅ 迭代器
@timeshow
def f_iter(n):
    L = (i for i in range(n) if i % 7 == 0)
    return L

# ✅ 过滤器 
@timeshow
def f_filter(n):
    L = filter(lambda x: x % 7 == 0, range(n))
    return L

# ✅ 精确控制循环次数 
@timeshow
def f_mind(n):
    L = (i*7 for i in range(n//7))
    return L

5、避免循环重复计算
如果你有一个迭代器,必须用它的元素做一些耗时计算,比如匹配正则表达式。你应该将正则表达式模式定义在循环之外,因为最好只编译一次模式,而不是在循环的每次迭代中一次又一次地编译它。

只要有可能,就应该尝试在循环外进行尽可能多的运算,比如将函数计算分配给局部变量,然后在函数中使用它。

# ❌ 应改避免的方式:
@timeshow
def f_more(s):
    import re
    for i in s:
        m = re.search(r'a*[a-z]?c', i)

# ✅ 更好的方式:
@timeshow
def f_less(s):
    import re
    regex = re.compile(r'a*[a-z]?c')
    for i in s:
        m = regex.search(i)
s = ["abctestabc"] * 1_000
f_more(s)
f_less(s)

6、少用内存和全局变量
内存占用是指程序运行时使用的内存量,为了让python代码运行得更快,应该减少程序的内存使用量,尽量减少变量或者对象的数量。
python访问局部变量比全局变量更有效,在有必要情况下,应该始终尝试忽略声明全局变量,一个在程序中定义过的全局变量会一直存在,直到整个程序编译完成,所以它一直占据着内存空间。另一方面,局部变量访问更快,且函数完成后即可回收,因此,使用多个局部变量比使用全局变量会更好。

你可能感兴趣的:(python怎么提升程序运行效率)