对于一些刚入门 Python 的敌人来说,代码略微简单些就难以搞懂代码外部到底是怎么运行的了,而且有时一运行就报错,难以一下发现错误,只会用 Print 去缓缓找异样的中央,效率很低下。
所以对程序进行监控和调试很重要。明天就给大家分享一个由国外大神制作的 Python 神工具,能够实时动静地监控 Python 程序的运行状况,逐行追踪代码的运行工夫,整个过程是可视化的,这就很赞了啊,能一清二楚地理解程序运行状况,有异样时也能疾速找到,节俭大量工夫。
我的项目地址:https://github.com/alexmojaki/heartrate
Heartate——如监测心率般追踪程序运行
这个工具库叫 Heartrate,能够实时可视化 Python 程序的执行过程。监控运行中的 Python 程序如图:
如图所示,左侧数字示意每行代码被触发的次数。长方框示意最近被触发的代码行——方框越长示意触发次数越多,色彩越浅示意最近被触发次数越多。
尽管追踪每行代码的触发次数是一个办法,然而要是能计算每次触发代码的执行工夫就好了。这样可能更好地阐明哪行代码是效率瓶颈。by 思得益于 executing (https://github.com/alexmojaki… 库,以后被执行的调用以高亮显示。
实时堆栈追踪(stacktrace)如下所示:
该工具能够:
- 启动程序追踪
- 在线程中启动服务器
- 关上显示 trace() 被调用的文件可视化图的浏览器窗口
在文件视图中,堆栈追踪位于底部。而在堆栈追踪中,用户能够点击正在追踪文件的堆栈条目,从而在该代码行关上文件的可视化图。
trace 只追踪调用它的线程。若要追踪多线程,用户必须在每个线程都予以调用,并且每次的端口也不同。
如何设置须要监测的程序
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。
装置
pip install --user heartrate
反对 Python 3.5 以上版本。
其余代码可视化工具
除了下面这个外,还有一个能够可视化代码执行过程的网站,名为 Pythontutor。和本文的 Heartrate 不同,该网站更多的是可视化数据在程序中的变动过程。
可视化的过程如下:
用户还能够在网站上编辑批改代码,察看运行过程中数据的变动。同时该网站还有 Java 等其余语言的版本。
网站地址:http://www.pythontutor.com
(http://www.pythontutor.com/)
参考链接:https://github.com/alexmojaki/heartrate
逆锋起笔
是一个专一于程序员的编程圈子,以分享java
、Python
、学习资源
为主,关注即可支付 23 种精选的编程视频教程和大佬们举荐的电子版学习材料!