社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

进击的Coder • 5 年前 • 595 次点击  

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


转载来源

公众号:机器之心

参与:一鸣、杜伟

阅读本文大概需要 5 分钟。


项目地址: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

推荐阅读

1

跟繁琐的命令行说拜拜!Gerapy分布式爬虫管理框架来袭!

2

跟繁琐的模型说拜拜!深度学习脚手架 ModelZoo 来袭!

3

只会用Selenium爬网页?Appium爬App了解一下

4

妈妈再也不用担心爬虫被封号了!手把手教你搭建Cookies池

崔庆才

静觅博客博主,《Python3网络爬虫开发实战》作者

隐形字

个人公众号:进击的Coder

长按识别二维码关注


好文和朋友一起看~
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38429
 
595 次点击