python的debug神器PySnooper

同事给我推荐了这个调试神器,一直没工夫看,今天看了下。

原文链接:

史上最方便的Python Debug工具|腾讯技术说

体验了下,感觉最好的用法:1、优先逐行调试;2、一些复杂状态处理或者偶现的bug,可以用这个库调试;感觉并不会颠覆传统的调试手段,只是让添加日志更加便利了而已。

但是同事从后台开发的角度给出了他的看法,
稍微大型的python项目都只有开发的时候才逐行,服务器他们基本都靠日志,只是客户端习惯了debugger的调试。写个桌面程序,debugger很容易,这个服务就没那么简单了,尤其多进程服务,一般py debugger只能靠远程调试的模式。

并发多请求的时候,每个进程挂在不同端口的debugger上,很痛苦的,遇到时序问题,debugger一到介入,连重现都是问题

当习惯了这种logging方式,就像自己写的程序天生有诊断功能一样,后边再用debugger又觉得繁琐了。所以我一直觉着我们日志收集上报做的很好

分析Snooper的用法,你会发现他利用了python装饰器语法,那什么是装饰器呢?

它放在一个函数开始定义的地方,它就像一顶帽子一样戴在这个函数的头上。和这个函数绑定在一起。在我们调用这个函数的时候,第一件事并不是执行这个函数,而是将这个函数做为参数传入它头顶上这顶帽子,这顶帽子我们称之为装饰函数 或 装饰器。

import pysnooper
@pysnooper.snoop()
def number_to_bits(number):
    if number:
        bits = []
        while number:
            number, remainder = divmod(number, 2)
            bits.insert(0, remainder)
        return bits
    else:
        return [0]
number_to_bits(6)

下面的这篇文章讲得挺全的。

一篇文章搞懂装饰器所有用法(建议收藏)

1) 装饰函数内定义具体需要如何处理传入的函数:

# 这是装饰函数
def logger(func):
    def wrapper(*args, **kw):
        print(‘我准备开始计算:{} 函数了:‘.format(func.__name__))

        # 真正执行的是这行。
        func(*args, **kw)

        print(‘啊哈,我计算完啦。给自己加个鸡腿!!‘)
    return wrappe

2) 业务函数前将装饰器函数带上去:

@logger
def add(x, y):
    print(‘{} + {} = {}‘.format(x, y, x+y))

3)调用

add(200, 50)

4) 输出:

我准备开始计算:add 函数了:
200 + 50 = 250
啊哈,我计算完啦。给自己加个鸡腿!

原文地址:https://www.cnblogs.com/khacker/p/10992546.html

时间: 2024-10-14 19:27:55

python的debug神器PySnooper的相关文章

Python的DEBUG LOG

一直在嵌入式行业,熟悉嵌入式的朋友都很了解嵌入式设备上DEBUG的麻烦,特别是一些缺乏断电工具和没有UI界面的设备.久而久之,开发一个新东西,首先就是要先搞定DEBUG手段.最近写了几个测试的python脚本用于跑些压力测试.找了些Python的DEBUG方法并加以处理,形成了方便使用的DEBUG手段. 其实Python的DEBUG LOG很简单很方便,相当于整辆车都做好了,就等你怎么开车了.而我们在C的嵌入式设备上,DEBUG都几乎需要自己造轮子,造车身.然而在Python中我们只需要impo

Python命令行神器Click

Python命令行神器Click 官网: Click 是用Python写的一个第三方模块,用于快速创建命令行.我们知道,Python内置了一个Argparse 的标准库用于创建命令行,但使用起来有些繁琐,Click相比于Argparse,就好比requests 相比于urllib. 快速使用 Click 的使用大致有两个步骤: 使用 @click.command()装饰一个函数,使之成为命令行接口: 使用 @click.option()等装饰函数,为其添加命令行选项等. 它的一种典型使用形式如下

【Python】debug工具-pdb(转)

Debug功能对于developer是非常重要的,python提供了相应的模块pdb让你可以在用文本编辑器写脚本的情况下进行debug. pdb是python debugger的简称. 常用的一些命令如下: 命令 用途 break 或 b 设置断点 continue 或 c 继续执行程序 list 或 l 查看当前行的代码段 step 或 s 进入函数 return 或 r 执行代码直到从当前函数返回 exit 或 q 中止并退出 next 或 n 执行下一行 pp 打印变量的值 help 帮助

Python打包EXE神器 pyinstaller

最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是传统的使用setup.py的方式来进行exe安装.但是结果都不是很好,不是很如人意.并且py2exe所使用的一个python 包互相排斥,只要安装了这个包,就无法进行exe化.甚至代码里面都不需要导入,就会报错. 因此,只能无奈放弃了py2exe工具.转而使用pyinstaller.使用感受真的是甩

python的Debug调试

先打开Shell的Debug-->Debugger调试, 然后点击程序的运行 点击Debug的step按钮查看每一步的结果

Python网站爬行神器requests的简单安装(适合新手)

requests是Python的一个HTTP客户端库,跟urllib,urllib2差不多,那我们为什么要用requests呢?采用官方的说是:python的标准库urllib2提供了大部分需要的HTTP功能,但是API太逆天了,一个简单的功能就需要一大堆代码. 下面是requests的安装步骤: 我们这里直接用pip安装(这样比较适合新手),新版python自带pip,python2.7.13下载地址:https://www.python.org/ftp/python/2.7.13/pytho

Python编写表白神器!向你的女神告白吧!!

马上就是七夕情人节了,送什么给你女神呢.鲜花什么的还不够!在写一个告白程序,向女神告白!让她看看你的爱意!哈哈哈哈! 程序和代码下载地址:点击下载 Python简介 Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松

Python数据可视化神器——pyecharts的超详细使用指南!

导读:pyecharts是一款将python与echarts结合的强大的数据可视化工具,本文将为你阐述pyecharts的使用细则. 前言 我们都知道python上的一款可视化工具matplotlib,而前些阵子做一个Spark项目的时候用到了百度开源的一个可视化JS工具-Echarts,可视化类型非常多,但是得通过导入js库在Java Web项目上运行,平时用Python比较多,于是就在想有没有Python与Echarts结合的轮子.Google后,找到一个国人开发的一个Echarts与Pyt

python bug debug

在python爆粗口的时候,通常会有三个重要信息 1.先骂是第几行 line 2.^然后具体到个人 3.Error它骂的内容 那么如何de掉这些不好,让python对你温柔点呢? 这简单,让它们不要输出错误就好了 那怎么才能让他们不输入错误呢? 1.用print()把爆粗口的地方圈起来先让程序运行 2.用’#‘把它注释掉,多行注释的方法是 在多行代码前后加入三引号 ''' 或者将代码选中使用快捷操作:windows 是 ctrl + /  mac是 cmd+/ 3.使用 try except 这