前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pdb && cProfile

pdb && cProfile

作者头像
Cloud-Cloudys
发布2020-07-07 02:04:14
发布2020-07-07 02:04:14
58700
代码可运行
举报
运行总次数:0
代码可运行

pdb

https://docs.python.org/zh-cn/3.7/library/pdb.html#module-pdb

使用方式

  • 1、在命令行下直接运行调试
代码语言:javascript
代码运行次数:0
运行
复制
python -m pdb test.py
  • 2、在需要被调试的代码中添加import pdbpdb.set_trace()再运行代码进行调试
代码语言:javascript
代码运行次数:0
运行
复制
# test.py
def func():
    print('enter func()')

a = 1
b = 2
import pdb
pdb.set_trace() # 运行到此处启动pdb
func()
c = 3
print(a + b + c)

常用命令

简写

说明

p <变量名>

输出变量的值

l

列出源码,当前位置前后11行

n

执行吓一条语句

s

执行下一条语句,如果是函数,则会进入函数内,显示–call–,执行函数内第一条语句,执行完函数内语句后跳出显示–return–

b

列出当前所有断点

b lineno

在某行添加断点

cl

清除断点

q

退出调试pdb

help

帮助

cProfile-性能分析

https://docs.python.org/zh-cn/3.7/library/profile.html

代码语言:javascript
代码运行次数:0
运行
复制
# test.py
def memoize(f):
    memo = {}
    def helper(x):
        if x not in memo:
            memo[x] = f(x)
        return memo[x]
    return helper

@memoize
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

fib_seq(30)
代码语言:javascript
代码运行次数:0
运行
复制
python -m cProfile test.py
  • ncalls:相应代码/函数被调用的次数
  • tottime:相应代码/函数执行所需时间(不包括它调用的其他代码/函数的时间)
  • tottime percall:tottime/ncalls的结果
  • cumtime:对应代码/函数执行所需时间,包含它调用的其他代码/函数的时间
  • cumtime percall:cumtime和ncall相除的平均结果

博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议 我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1utoln9pyvwqu

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年7月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • pdb
    • 使用方式
    • 常用命令
  • cProfile-性能分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档