Python代码cProfile耗时分析及可视化
Python: cProfile 食用方法
import cProfile# 直接把分析结果打印到控制台
# loading为需要监测的函数,arg为其参数
cProfile.run("loading(arg)")
# 把分析结果保存到文件中
cProfile.run("loading(arg)", filename="result.out")
# 增加排序方式
cProfile.run("loading(arg)", filename="result.out", sort="cumulative")
输出类似:
1767148 function calls (1751776 primitive calls) in 3.579 secondsOrdered by: standard namencalls tottime percall cumtime percall filename:lineno(function)2824 0.002 0.000 0.014 0.000 <__array_function__ internals>:2(all)7574 0.005 0.000 0.050 0.000 <__array_function__ internals>:2(any)2 0.000 0.000 0.000 0.000 <__array_function__ internals>:2(argsort)2 0.000 0.000 0.000 0.000 <__array_function__ internals>:2(copyto)20 0.000 0.000 0.000 0.000 <__array_function__ internals>:2(count_nonzero)47 0.000 0.000 0.000 0.000 <__array_function__ internals>:2(cumsum)1441 0.001 0.000 0.009 0.000 <__array_function__ internals>:2(prod)47 0.000 0.000 0.001 0.000 <__array_function__ internals>:2(unique)1 0.000 0.000 0.000 0.000 <string>:1(<module>)1908 0.007 0.000 0.007 0.000 BOX_adjacent.py:10(__init__)7750 0.061 0.000 0.164 0.000 BOX_adjacent.py:184(Best_Blok_adj)7750 0.002 0.000 0.002 0.000 BOX_adjacent.py:277(<listcomp>)27042 0.063 0.000 0.426 0.000 BOX_adjacent.py:29(Can_Load_adj)318 0.000 0.000 0.000 0.000 BOX_adjacent.py:291(reset)95394 0.007 0.000 0.007 0.000 BOX_adjacent.py:51(<lambda>)16944 0.001 0.000 0.001 0.000 BOX_adjacent.py:55(<lambda>)34047 0.080 0.000 0.237 0.000 BOX_adjacent.py:81(Possible_Oriatation_adj)76384/61012 0.080 0.000 0.178 0.000 copy.py:128(deepcopy)15372 0.001 0.000 0.001 0.000 copy.py:182(_deepcopy_atomic)...
其中
共有1767148次函数调用,原始调用为1751776次,原始调用说明不包含递归调用。
以standard name进行排序。76384/61012表示发生了递归调用,61012为原始调用次数,76384为递归调用次数
ncalls 函数的被调用次数
tottime 函数总计运行时间,除去函数中调用的函数运行时间
percall 函数运行一次的平均时间,等于tottime/ncalls
cumtime 函数总计运行时间,含调用的函数运行时间
percall 函数运行一次的平均时间,等于cumtime/ncalls
filename:lineno(function) 函数所在的文件名,函数的行号,函数名
可视化工具 graphviz,gprof2dot
pip install graphviz
pip install gprof2dotgprof2dot -f pstats result.out | dot -Tpng -o result.png
结果如下:
可以看到check_space_contain被调用了太多次,check代码发现用很多重复的调用,所以简单改一下,只调用一次进行赋值,之后直接拿来用,结果累计调用次数直接降低了30%,节省大量时间,类似可改进的地方还有很多。另外在清楚任务执行与调用关系的情况下,可以做多进程增加运行效率。
Python代码cProfile耗时分析及可视化相关推荐
- 服不服?40行Python代码,实现卷积特征可视化
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|深度学习这件小事 卷积神经网络(CNN)变革了计算机视觉 ...
- [转载] python 卷积_40 行 Python 代码,实现卷积特征可视化
参考链接: 使用Python3跟踪鸟类迁移 卷积神经网络(CNN)变革了计算机视觉,并将彻底改变整个世界.因此,开发解释 CNN 的技术也同样是一个重要的研究领域.本文将向你解释如何仅使用 40 行 ...
- 40行Python代码,实现卷积特征可视化
最近在阅读 Jeremy Rifkin 的书<The End of Work>时,我读到一个有趣的关于 AI 的定义.Rifkin 写到:「今天,当科学家们谈论人工智能时,他们通常是指『一 ...
- Facebook 开源 Instagram 的Python 代码静态安全分析工具 Pysa
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 Facebook 正式发布安全工具 Pysa,它专用于查找并修复 Instagram app 庞大Python 代码库中的漏洞. Py ...
- 用一行 Python 代码搞定炫酷可视化
作者:xiaoyu,半路转行数据,首发自Python数据科学 前言 学过Python数据分析的朋友都知道,在可视化的工具中,有很多优秀的三方库,比如matplotlib,seaborn,plotly, ...
- 利用Python做新能源公司股票分析(可视化)
这篇文章只有一些代码,分析的内容很多,但是没有进行必要的解释 我也是第一次做,不是很懂股票,可能有一些错误. # 导包 import numpy as np import matplotlib.pyp ...
- python 一行_一行 Python 代码搞定炫酷可视化
cf.set_config_file(offline=True) 然后我们需要按照上面的使用格式来操作,首先我们需要有个DataFrame,如果手头没啥数据,那可以先生成个随机数.cufflinks有 ...
- Matlab代码的耗时分析、优化、加速
Profile(分析) 在加速你的matlab程序之前,你需要知道你的代码哪一部分运行最慢.matlab提供个简单的机制,让你能够知道你 的代码的某一部分运行所占用CPU时间.通过在代码段开始添加ti ...
- 【论文必用】模糊C均值聚类的简单介绍、复现及Python代码详解、聚类可视化图的绘制过程详解!
详解模糊C均值聚类 一.聚类 二.模糊C均值聚类 三.模糊C均值聚类的Python实现 四.参考链接 一.聚类 聚类的定义: 将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类 ...
最新文章
- 第三届北京智源大会开幕,全球最大智能模型“悟道2.0”重磅发布
- ai里为什么不能随意放大缩小_平面设计基础知识:平面设计师应该熟练掌握的软件之AI。...
- 怎样在Web开发中完美控制IE标题栏
- 删除超过10亿用户的数据,Facebook 关闭面部识别系统
- Android adb命令选择设备操作
- LeetCode--55.跳跃游戏(贪心,零点跳跃)
- 文本处理算法_关键词提取和文本摘要算法TextRank详解及实战
- 计算机应用基础是文管二级吗,计算机应用基础(文管二级)习题册.doc
- 巧用ASP.NET预编译Web应用程序规避调用延迟,徐汇区网站设计
- C++编程语言中异常处理(try-catch-throw)介绍
- 《上古天真论》第六讲文字版
- 10 工作中常见知识汇总
- 获取高程数据以及转灰度图和裁剪操作
- 【嵌入式】基于SPI的M8266WIFI模块调试
- 使用python调整excel表格的行和列以及合并或拆分单元格
- 计算机毕业设计ssm民宿预定管理系统20sxh系统+程序+源码+lw+远程部署
- 《英语语法新思维 基础版2》读书笔记(一)
- UE4 EQS C++自定义节点编写
- 反相放大电路反馈电阻上并联电容的作用 [转载]
- GitHub上AI岗位面试笔记(机器学习算法/深度学习/ NLP/计算机视觉)