Python - 使用pycallgraph生成函数关系图
1- pycallgraph简介
2- 安装pycallgraph
- $ pip3 install pycallgraph --proxy=10.144.1.10:8080
- Collecting pycallgraph
- Using cached https://files.pythonhosted.org/packages/ca/2e/fafa56316bc2c5fbfbda898f964137c8b5ef33a876cb1f35a54ff6afbd60/pycallgraph-1.0.1.tar.gz
- Installing collected packages: pycallgraph
- Running setup.py install for pycallgraph ... done
- Successfully installed pycallgraph-1.0.1
- 下载:https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi
- 设置环境变量:Advanced System Settings--》Advanced (tab) ---》Environmental Variables then edit the PATH variable.---》"C:\Program Files (x86)\Graphviz2.38\bin"
3- 运行pycallgraph
3-1 直接在命令行方式运行
- $ pycallgraph graphviz -- ./test.py
3-2 使用API在命令行运行
- $ cat TempTest.py
- #! python3
- # -*- coding: utf-8 -*-
- def testStr(key):
- print("testStr is :", key)
- $ cat CallGraphTest.py
- #! python3
- # -*- coding: utf-8 -*-
- from pycallgraph import PyCallGraph
- from pycallgraph.output import GraphvizOutput
- import TempTest
- def testNum(key):
- TempTest.testStr(key)
- print("testNum is :", key)
- g = GraphvizOutput(output_file=r'./trace.png')
- with PyCallGraph(output=g):
- TempTest.testStr("111")
- testNum(222)
- $
- $ py -3 CallGraphTest.py
- testStr is : 111
- testStr is : 222
- testNum is : 222
- $ ls -l
- total 14
- drwxr-xr-x 1 guowli 1049089 0 May 23 16:07 __pycache__/
- -rwxr-xr-x 1 guowli 1049089 350 May 23 15:56 CallGraphTest.py*
- -rwxr-xr-x 1 guowli 1049089 92 May 23 15:59 TempTest.py*
- -rw-r--r-- 1 guowli 1049089 9141 May 23 16:07 trace.png
- $
生成指定名称的函数关系图trace.png
示例-2
- #! python3
- # -*- coding: utf-8 -*-
- from pycallgraph import PyCallGraph
- from pycallgraph.output import GraphvizOutput
- from pycallgraph import Config
- from pycallgraph import GlobbingFilter
- class Banana:
- def eat(self):
- pass
- class Person:
- def __init__(self):
- self.no_bananas()
- def no_bananas(self):
- self.bananas = []
- def add_banana(self, banana):
- self.bananas.append(banana)
- def eat_bananas(self):
- [banana.eat() for banana in self.bananas]
- self.no_bananas()
- def main():
- graphviz = GraphvizOutput()
- graphviz.output_file = 'basic.png'
- config = Config()
- config.max_depth = 5 # 控制最大追踪深度
- with PyCallGraph(output=graphviz, config=config):
- person = Person()
- for a in range(10):
- person.add_banana(Banana())
- person.eat_bananas()
- if __name__ == '__main__':
- main()
生成函数关系图
4- 在Pycharm运行objgraph
- 'The command "{}" is required to be in your path.'.format(cmd))
- pycallgraph.exceptions.PyCallGraphException: The command "dot" is required to be in your
- path.
- Name: PATH
- Value: C:\Program Files (x86)\Graphviz2.38\bin
5- 参考信息
- pycallgraph 追踪Python函数内部调用:http://www.cnblogs.com/xiaomm/p/6325940.html
- 利用graphviz软件和pycallgraph库自动生成Python代码函数调用关系图:https://blog.csdn.net/qq_36408085/article/details/82952846
Python - 使用pycallgraph生成函数关系图的更多相关文章
- Python - 使用objgraph生成对象引用关系图
1- objgraph简介 HomePage:https://mg.pov.lt/objgraph/ PyPI:https://pypi.org/project/objgraph/ 一般用于分析pyt ...
- python xlwt模块生成excel文件并写入数据 xlrd读取数据
python中一般使用 xlwt (excel write)来生成Excel文件(可以控制单元格格式),用 xlrd 来读取Excel文件,用xlrd读取excel是不能对其进行操作的. 1.xlrd ...
- tensorflow 升级到1.9-rc0,生成静态图frozen graph.pb本地测试正常, 在其他版本(eg1.4版本)或者android下运行出错NodeDef mentions attr 'dilations' not in Op<name=Conv2D; signature=input:T, filter:T -> output:T; attr=T:type,allowed=[DT_
这时节点定义找不到NodeDef attr 'dilations' not in,说明执行版本的NodeDef不在节点定义上,两个不一致,分别是执行inference的代码和生成静态图节点不一致(当然 ...
- Locust 测试结果通过Matplotlib生成趋势图
目的: 相信大家对于使用Loadrunner测试后的结果分析详细程度还是有比较深刻的感受的,每个请求,每个事务点等都会有各自的趋势指标,在同一张图标中展示.如下图: 而Locust自身提供的chart ...
- 使用Python第三方库生成二维码
本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...
- python根据文本生成词云图
python根据文本生成词云图 效果 代码 from wordcloud import WordCloud import codecs import jieba #import jieba.analy ...
- Python用MyQR生成自定义个性二维码
MyQR是一个能够生成自定义二维码的python第三方库,根据需要能够生成普通二维码.带背景图片的艺术二维码.动态二维码. 1.MyQR安装 安装非常简单,直接用pip install MyQR,需要 ...
- 利用python画出SJF调度图
最先发布在csdn.本人原创. https://blog.csdn.net/weixin_43906799/article/details/105510046 SJF算法: 最短作业优先(SJF)调度 ...
- 使用Python代码制作GIF动态图
使用Python PIL.Image 制作GIF图片: import PIL.Image 相关模块 img = Image.open(img_name) ...
随机推荐
- go的包下载失败解决方案
包被墙的方案 1 翻啊的墙 2 gopm 3 https://github.com/golang/net 4 使用国内网站打包 5 export GOPROXY=https://goproxy.io
- [Jenkins Git] 在Jenkins上拉代码总是失败,跑去本地看,提示输入用户名和密码,但是Jenkins上已经配置了正确的用户名和密码
git config --global credential.helper manager
- 遍历ArcMap已加载数据的属性
import arcpy f = open("D:\workspace\coords.txt","w") with arcpy.da.SearchCursor( ...
- WinForm DotNetBar 动态添加DataGridView
DataGridView dgv = new DataGridView(); dgv.Dock = DockStyle.Fill; dgv.Location = new System.Drawing. ...
- xtrabackup命令用法实战(转)
xtrabackup命令用法实战 转载出自 https://blog.csdn.net/wfs1994/article/details/80399408 完全备份 1.创建备份 [root@linux ...
- Springboot & Mybatis 构建restful 服务五
Springboot & Mybatis 构建restful 服务五 1 前置条件 成功执行完Springboot & Mybatis 构建restful 服务四 2 restful ...
- homework1-201521410029
姓名:孙浩学号: 201521410029指导教师:高见 实验日期:2018年8月9日 1. 虚拟机安装与调试 安装好xp和kali虚拟机之后,查看这三者(包括主机)的i ...
- Springboot单例模式实战封装json转换
一.定义 保证一个类仅有一个实例,并提供一个全局访问点. 二.优点 (1)在内存里只有一个实例,减少了内存开销 (2)可以避免对资源的多重占用 (3)设置全局访问点,严格控制访问 ...
- JavaScript-BOM与DOM
BOM与DOM BOM: Browser Object Model(浏览器对象模型),即把 浏览器 当做一个对象来看待.BOM 除了可以访问文档中的组件之外,还可以访问 浏览器组件,比如页面中的 na ...
- 数据结构C语言顺序表
#include <stdio.h> #include <stdlib.h> typedef int EmenType; typedef struct Node { int d ...