python代码调试和性能分析

调试和性能分析

''
 调试和性能分析
 用pdb进行代码调试
 首先 我们来看代码的调试 也许不少人会有疑问 说白了不就是程序中使用
 print()语句吗?

 没错 在程序中相应的地方打印的确是调试程序的一个常用手段,但这只适用于小型程序 因为你每次都得重新运行整个程序
 或者是一个完整的功能模块 才能看到打印出来的变量值 如果程序不大 每次运行都非常快 那么使用print()的确是很方便

 可能又有人会说 现在很多的IDE不都有内置的debug工具?
 如何使用pdb
 首先 要启动pdb调试 我们只需在程序中加入import pdb 和 pdb.set_trace()这两行代码就行了
'''
import pdb

a = 1
b = 2

# def func():
#     print('enter func()')

# pdb.set_trace()
# c = 3
# func()
# print(a + b + c)


# 命令's' 就是step into的意思 即进入相对应的代码内部
# s, n,l除了这些常用命令 还有许多其他命令可使用



# 用cProfile进行性能分析


'''
关于调试的内容 主要讲这些 事实上 除了要对程序进行调试 性能分析也是每个开发者的必备技能
日常工作中 我们常常会遇到这样的问题 在线上 我发现产品的某个功能模块效率低下 延迟高 占用的
资源多 但却不知道是哪里出了问题

这时对代码进行profile就显得异常重要了
这里所谓的profile 是指对代码的每个部分进行动态的分析 比如准确计算出每个模块消耗的时间等

计算裴波拉契数列 运用递归思想 

'''

import cProfile

def fib(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)


def fib_seq(n):
    res = []
    if n > 0:
        res.extend(fib_seq(n-1))
    res.append(fib(n))
    return res

# print(fib_seq(30))    # 运行结果 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040]

cProfile.run('fib_seq(30)')

# 测试一下这段代码总的效率以及各个部分的效率

在这里插入图片描述
以上代码可以看到fib()函数被调用了七百多次,用时最多,
导入import cProfile 运用cProfile.run()分析性能

发布了106 篇原创文章 · 获赞 0 · 访问量 2388

猜你喜欢

转载自blog.csdn.net/weixin_45905671/article/details/105279680
今日推荐