python 逐行调试工具_推荐一款神器:让你看透Python 代码执行过程

 本文转自机器之心,禁止二次转载 

对于一些刚入门 Python 的朋友来说,代码稍微复杂些就难以搞懂代码内部到底是怎么运行的了,而且有时一运行就报错,难以一下发现错误,只会用 Print 去慢慢找异常的地方,效率很低下。

所以对程序进行监控和调试很重要。今天就给大家分享一个由国外大神制作的 Python 神工具,可以实时动态地监控 Python 程序的运行情况,逐行追踪代码的运行时间,整个过程是可视化的,这就很赞了啊,能一清二楚地了解程序运行情况,有异常时也能快速找到,节省大量时间。

978ae80dc0d5b4cf1515e206a1949749.png

项目地址:https://github.com/alexmojaki/heartrate

7363e39022f48efa6388266b72a711f5.gif

Heartate——如监测心率般追踪程序运行

这个工具库叫 Heartrate ,可以实时可视化 Python 程序的执行过程。 监控运行中的 Python 程序如图:

78703145ffabd30212afea80395ac19f.gif

如图所示,左侧数字表示每行代码被触发的次数。 长方框表示最近被触发的代码行——方框越长表示触发次数越多,颜色越浅表示最近被触发次数越多。
虽然追踪每行代码的触发次数是一个方法,但是要是能计算每次触发代码的执行时间就好了。 这样能够更好地说明哪行代码是效率瓶颈。 by 思
得益于 executing (https://github.com/alexmojaki/executing) 库,当前被执行的调用以高亮显示。 实时堆栈追踪(stacktrace)如下所示:

39040aaf8c10096250775d1faef4d2a7.gif

7363e39022f48efa6388266b72a711f5.gif

功能

该工具可以:
  • 启动程序追踪

  • 在线程中启动服务器

  • 打开显示 trace() 被调用的文件可视化图的浏览器窗口

在文件视图中,堆栈追踪位于底部。 而在堆栈追踪中,用户可以点击正在追踪文件的堆栈条目,从而在该代码行打开文件的可视化图。 trace 只追踪调用它的线程。 若要追踪多线程,用户必须在每个线程都予以调用,并且每次的端口也不同。 7363e39022f48efa6388266b72a711f5.gif

如何设置需要监测的程序

files 确定了除调用的 trace 之外其他需要追踪的文件。 files 必须是可调用的,并接受一个参数: 文件路径,同时如果应该追踪该文件,则需要返回 True。 为方便起见,这位开发者提供了以下函数:
  • files.all:追踪所有文件;

  • files.path_contains(substrings):追踪路径中包含任何给定子字符串的所有文件;

  • files.contains_regex(pattern):追踪自身包含给定正则表达式(regex)的所有文件,所以用户可以在源代码中标记所追踪的文件,如添加注释。

默认情况下追踪包含注释 # heartrate 的文件(空格可选)。 如果用户要追踪多个文件,则可通过以下两种方式得到它们的可视化页面:
  • 在堆栈追踪中,用户点击正在追踪的堆栈条目,则可以打开页面并跳转至堆栈条目;

  • 跳转至 http://localhost:9999/ 网站的索引页,从而查看追踪文件列表。

host: 服务器的 HTTP host。 若要运行可从任何地方访问的远程服务器,使用'0.0.0.0'。 默认为'127.0.0.1'。 port: 服务器的 HTTP 端口。 默认为 9999。 browser: 若为 True,则自动打开显示文件(trace 被调用)可视化图的浏览器标签。 默认为 False。 7363e39022f48efa6388266b72a711f5.gif

安装

pip install --user heartrate
支持 Python 3.5 以上版本。 7363e39022f48efa6388266b72a711f5.gif

其他代码可视化工具

除了上面这个外,还有一个可以可视化代码执行过程的网站,名为 Pythontutor。 和本文的 Heartrate 不同,该网站更多的是可视化数据在程序中的变化过程。 可视化的过程如下:

68b3c60a1e44aa72c5758f3fadb5b5ec.gif

用户还可以在网站上编辑修改代码,观察运行过程中数据的变化。 同时该网站还有 Java 等其他语言的版本。 978ae80dc0d5b4cf1515e206a1949749.png

网站地址:http://www.pythontutor.com (http://www.pythontutor.com/)

978ae80dc0d5b4cf1515e206a1949749.png

参考链接:https://github.com/alexmojaki/heartrate

往期回顾
  • 普林斯顿博士:手写30个主流机器学习算法,全都开源了!

  • 资深程序员骆昊:Python从新手到大师,100天完整学习路线

  • 推荐一款数据处理的神级工具,完全结合了Python和Excel的优势

7c0a4208d7c2be26698d777589a5f6aa.png 有趣的灵魂在等你

点个在看62ea5685567fb7e2acb1b2d3cf2c85de.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值