【代码】Python性能优化

看到一篇文章,发现函数带来的提速,于是测试了下:

t0 = time()
for i in range(100000000):
    a = 1
print(time() - t0)  # 花费 5.7 秒
def main():
    t0 = time()
    for i in range(100000000):
        a = 1
    print(time() - t0) 

if __name__ == '__main__':
    main()  # 花费 2.6 秒

快了一倍! 散列表比起数组来还是很花费时间
变量取决于如何定义, 解释器花费或多或少的时间尝试计算出它们的值. Python在尝试判定变量名时利用动态作用域规则进行处理.当它在代码中找到一个变量时,首先通过查看局部名空间字典考察该变量是不是一个局部变量.如果找到该变量,就抓取该变量的值.否则再在全局名字空间字典中进行搜索,如果需要, 还会搜索内置名字空间.
因此,局部变量比其他类型变量的搜索速度要快得多,因而获得它们的值也要快得多.局部变量搜索速度快是因为它们对应于数组中的下标 操作,而全局变量搜索则对应于散列表搜索.一个良好的优化方法是:如果在函数中使用了很多全局变量,把它们的值赋给局部变量可能会有很大帮助.

猜你喜欢

转载自blog.csdn.net/C_Python_/article/details/86490251