Heartrate:如追综心跳般实时动态可视化监测Python程序运行

2019 年 8 月 13 日 机器之心

机器之心报道

参与:一鸣、杜伟
Python 是一门非常受欢迎的编程语言,其灵活易用的特性使其在 web 应用、数据分析等方面有广泛的应用。但是 Python 有一个受到诟病的特点——运行速度低下。因此,Python 开发者需要经常对程序进行监控和调试,使代码运行变得高效。近日,一位开发者开源了一个 Python 工具,用户可以实时动态地监控 Python 程序的运行情况,逐行追踪代码的运行时间,而且整个过程是可视化的。
项目地址:https://github.com/alexmojaki/heartrate


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


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


如图所示,左侧数字表示每行代码被触发的次数。长方框表示最近被触发的代码行——方框越长表示触发次数越多,颜色越浅表示最近被触发次数越多。


虽然追踪每行代码的触发次数是一个方法,但是要是能计算每次触发代码的执行时间就好了。这样能够更好地说明哪行代码是效率瓶颈。by 思


得益于 executing (https://github.com/alexmojaki/executing) 库,当前被执行的调用以高亮显示。


实时堆栈追踪(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


文为机器之心报道,转载请联系本公众号获得授权
✄------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com
登录查看更多
0

相关内容

Python是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
264+阅读 · 2020年6月10日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
107+阅读 · 2020年5月3日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
ExBert — 可视化分析Transformer学到的表示
专知会员服务
31+阅读 · 2019年10月16日
TheFatRat 一款简易后门工具
黑白之道
35+阅读 · 2019年10月23日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Joint Monocular 3D Vehicle Detection and Tracking
Arxiv
8+阅读 · 2018年12月2日
A Survey on Deep Transfer Learning
Arxiv
11+阅读 · 2018年8月6日
Arxiv
8+阅读 · 2018年6月19日
Arxiv
7+阅读 · 2017年12月26日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
264+阅读 · 2020年6月10日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
107+阅读 · 2020年5月3日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
ExBert — 可视化分析Transformer学到的表示
专知会员服务
31+阅读 · 2019年10月16日
相关资讯
TheFatRat 一款简易后门工具
黑白之道
35+阅读 · 2019年10月23日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Top
微信扫码咨询专知VIP会员