安装

安装方法很简单,可以使用 pip 或 anaconda 两种安装方法:

$ pip install pysnooper

或者

$ conda install -c conda-forge pysnooper

监控整个函数

一个使用例子如下,首先是需要导入 pysnooper ,然后想知道函数 number_to_bits() 的运行情况,只需要添加 @pysnooper.snoop() 即可。


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

输出结果

Starting var:.. number = 6
14:52:10.169804 call         4 def number_to_bits(number):
14:52:10.169899 line         5     if number:
14:52:10.169923 line         6         bits = []
New var:....... bits = []
14:52:10.169940 line         7         while number:
14:52:10.169963 line         8             number, remainder = divmod(number, 2)
Modified var:.. number = 3
New var:....... remainder = 0
14:52:10.169981 line         9             bits.insert(0, remainder)
Modified var:.. bits = [0]
14:52:10.170006 line         7         while number:
14:52:10.170028 line         8             number, remainder = divmod(number, 2)
Modified var:.. number = 1
Modified var:.. remainder = 1
14:52:10.170045 line         9             bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
14:52:10.170068 line         7         while number:
14:52:10.170088 line         8             number, remainder = divmod(number, 2)
Modified var:.. number = 0
14:52:10.170104 line         9             bits.insert(0, remainder)
Modified var:.. bits = [1, 1, 0]
14:52:10.170124 line         7         while number:
14:52:10.170143 line        10         return bits
14:52:10.170159 return      10         return bits
Return value:.. [1, 1, 0]

监控函数一部分

通过使用with 将想要监控的部分包含起来

import pysnooper
import randomdef foo():lst = []for i in range(10):lst.append(random.randrange(1, 1000))with pysnooper.snoop():lower = min(lst)upper = max(lst)mid = (lower + upper) / 2print(lower, mid, upper)foo()

输出为

New var:....... lst = [166, 196, 138, 683, 176, 265, 838, 597, 105, 407]
New var:....... i = 9
14:55:33.853343 line        10         lower = min(lst)
New var:....... lower = 105
14:55:33.853460 line        11         upper = max(lst)
New var:....... upper = 838
105 471.5 838
14:55:33.853492 line        12         mid = (lower + upper) / 2
New var:....... mid = 471.5
14:55:33.853520 line        13         print(lower, mid, upper)

其他使用技巧

重定向到文件, 在文件中查看

@pysnooper.snoop('/my/log/file.log')

监控函数外变量

@pysnooper.snoop(watch=('number','number1'))
def number_to_bits():global numberif number:

查看list或者dict等引用的每个元素的值的变化(默认只显示整个对象的变化,不会针对每个元素的变化提示)

@pysnooper.snoop(watch_explode=('bits','bits1'))

跟踪的函数深度,默认为1,只跟踪当前函数的变量的变化

@pysnooper.snoop(depth=2)

在跟踪日志前面加前缀, 方便跟自己的日志进行区分

@pysnooper.snoop(prefix='ZZZ ')

python调试利器pysnooper相关推荐

  1. 【GitHub探索】python调试利器——pysnooper源码分析

    前言 这次又开了个新坑--GitHub探索,主要内容是试水当期GitHub上较火的repo 虽然top榜上各路新手教程跟经典老不死项目占据了大半江山,但清流总是会有的. 第一期就试水一下pysnoop ...

  2. [转]PDB——Python调试利器详解

    python 2.7 pdb官方文档:https://docs.python.org/2.7/library/pdb.html pdb是ptyhon内置的一个调试库,是调试python代码的好帮手,本 ...

  3. pdb python 命令_PDB——Python调试利器详解

    pdb是ptyhon内置的一个调试库,是调试python代码的好帮手,本文是对其用法的详细介绍. QuickStart 待调试的代码内容 文件名:test.py: # coding:utf-8 imp ...

  4. python debug 调试工具 pysnooper

    文章目录 安装 定义1个函数,查看调试 把调试的内容写入debug.log文件 查看多个函数,有层级关系 给debug信息添加前缀 设置跟踪函数的深度(默认深度为1,只调试当前函数) 设置最大的输出长 ...

  5. python利器的使用-PPython:PHP 拥抱 Python 的利器

    原标题:PPython:PHP 拥抱 Python 的利器 原创: 作者/望星星降 介绍 Python 与 PHP 都是广泛使用的语言,各有所长,让人期待两者结合可以实现更丰富的效果. 在 PHP 中 ...

  6. Python - 调试Python代码的方法

    调试(debug) 将可疑环节的变量逐步打印出来,从而检查哪里是否有错. 让程序一部分一部分地运行起来.从核心功能开始,写一点,运行一点,再修改一点. 利用工具,例如一些IDE中的调试功能,提高调试效 ...

  7. 关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 转自:https://my.oschina.net/leejun2005/blog/151103 1.原理简介 ...

  8. 【远程文件浏览器】Unity+Lua开发调试利器

    Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...

  9. Python爬虫利器四之PhantomJS的用法

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 原文这篇文章讲解的纯PhantomJS的用法,讲得比较细致,具体可以跟Python也可以跟node等结合使用. ...

最新文章

  1. python 把列表或者元组转成集合
  2. 主流微服务全链路监控系统之战
  3. RemoveError: ‘requests‘ is a dependency of conda and cannot be removed from conda‘s operating envir
  4. AI赌神升级!无惧bluff,6人局德扑完胜世界冠军,训练只用了8天
  5. js,jq设置获取属性,样式
  6. 天马微电子的mes工程师_上海天马微电子MES工程师职位(部门:制造中心/自动化部)怎么样?...
  7. 使用lodash防抖_什么,lodash 的防抖失效了?
  8. 值转换成布尔类型的False;
  9. [DiMP跟踪算法]代码学习笔记
  10. LabVIEW与西门子1200,1500系列Sanp7协议通讯案例+QMH标准框架编写,非常实用,长期测试通讯无误。
  11. java sasl例子_Java Subject.doAs方法代碼示例
  12. 机器学习实战案例—验证码(CAPTCHA)识别基于Logistic
  13. 基于stc51单片机的指纹解锁模块
  14. 包邮再送500份!我们自制了一张【数据分析知识鼠标垫】,抓紧领取
  15. 25款专业的 WordPress 电子商务网站主题
  16. 《逃离禁闭岛》游戏评测:不一样的密室逃脱
  17. 职场摸爬滚打的卑微软件测试工!外包干了三年后,我废了...
  18. 修理机器人基维斯_《魔兽世界》魔兽世界机器人攻略
  19. java 根据ip地址获取地理位置及运营商。
  20. 小白计算机视觉学习报告

热门文章

  1. python从入门到精通pdf下载-Python网络爬虫从入门到精通 PDF 下载
  2. python基础教程百度云-python从入门到精通视频教程百度云资源
  3. 灵云语音识别(ASR)实现实时识别
  4. 30轧制过程的计算机控制系统,中厚板轧制过程计算机控制系统结构的研制(1)
  5. linux安装pdo mysql扩展_linux下php安装pdo_mysql扩展
  6. cpu上干硅脂怎么清理_cpu导热硅脂如何涂抹,涂抹的时候需要注意哪些事项
  7. 3d怎么把两个面拼接在一起_视频拼接怎么做?如何将多段视频拼接在一起?
  8. Bootstrap Table API 中文版 说明文档
  9. npm修改全局包安装路径
  10. 兰州大学第一届『飞马杯』程序设计竞赛(同步赛),签到题ACFHJ