利用PyCharm的Profile工具进行Python性能分析
Profile:
PyCharm提供了性能分析工具Run-》Profile,如下图所示。利用Profile工具可以对代码进行性能分析,找出瓶颈所在。
测试:
下面以一段测试代码来说明如何使用pycharm的Profile功能。
测试代码见下文,文件命名为Test.py, 一共有5个函数,每个函数都调用了time.sleep进行延时,其中fun5函数调用了fun4函数:
import time
def fun1(a, b):
    print('fun1')
    print(a, b)
    time.sleep(1)
def fun2():
    print('fun2')
    time.sleep(1)
def fun3():
    print('fun3')
    time.sleep(2)
def fun4():
    print('fun4')
    time.sleep(1)
def fun5():
    print('fun5')
    time.sleep(1)
    fun4()
fun1('foo', 'bar')
fun2()
fun3()
fun5()
点击Run-》Profile开始测试,代码运行结束后会生成一栏测试结果,测试结果由两部分构成,Statistcs(性能统计)和Call Graph(调用关系图):
Statistcs(性能统计):
性能统计界面由Name、Call Count、Time(ms)、Own Time(ms) 4列组成一个表格,见下图。
1. 表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒(ms)。
2.点击表头上的小三角可以升序或降序排列表格。
3.在Name这一个列中双击某一行可以跳转到对应的代码。
4.以fun4这一行举例:fun4被调用了一次,运行时间为1000ms,占整个运行时间的16.7%
Call Graph(调用关系图):
Call Graph(调用关系图)界面直观展示了各函数直接的调用关系、运行时间和时间百分比,见下图。
0.右上角的4个按钮表示放大、缩小、真实大小、合适大小;
1.箭头表示调用关系,由调用者指向被调用者;
2.矩形的左上角显示模块或者函数的名称,右上角显示被调用的次数;
3.矩形中间显示运行时间和时间百分比;
4.矩形的颜色表示运行时间或者时间百分比大小的趋势:红色 > 黄绿色 > 绿色,由图可以看出fun3的矩形为黄绿色,fun1为绿色,所有fun3运行时间比fun1长。
5.从图中可以看出Test.py直接调用了fun3、fun1、fun2和fun5函数;fun5函数直接调用了fun4函数;fun1、fun2、fun3、fun4和fun5都直接调用了print以及sleep函数;整个测试代码运行的总时间为6006ms,其中fun3的运行时间为1999ms,所占的时间百分比为33.3%,也就是 1999ms / 6006ms = 33.3%。
--------------------- 
作者:xiemanR 
来源:CSDN 
原文:https://blog.csdn.net/xiemanR/article/details/69398057 
版权声明:本文为博主原创文章,转载请附上博文链接!
利用PyCharm的Profile工具进行Python性能分析的更多相关文章
- Python性能分析工具Profile
		Python性能分析工具Profile 代码优化的前提是需要了解性能瓶颈在什么地方,程序运行的主要时间是消耗在哪里,对于比较复杂的代码可以借助一些工具来定位,python 内置了丰富的性能分析工具,如 ... 
- Python性能分析
		Python性能分析 https://www.cnblogs.com/lrysjtu/p/5651816.html https://www.cnblogs.com/cbscan/articles/33 ... 
- 如何进行 Python性能分析,你才能如鱼得水?
		[编者按]本文作者为 Bryan Helmig,主要介绍 Python 应用性能分析的三种进阶方案.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 我们应该忽略一些微小的效率提升,几乎在 9 ... 
- Python性能分析与优化PDF高清完整版免费下载|百度云盘
		百度云盘|Python性能分析与优化PDF高清完整版免费下载 提取码:ubjt 内容简介 全面掌握Python代码性能分析和优化方法,消除性能瓶颈,迅速改善程序性能! 对于Python程序员来说,仅仅 ... 
- python性能分析(一)——使用timeit给你的程序打个表吧
		前言 我们可以通过查看程序核心算法的代码,得知核心算法的渐进上界或者下界,从而大概估计出程序在运行时的效率,但是这并不够直观,也不一定十分靠谱(在整体程序中仍有一些不可忽略的运行细节在估计时被忽略了) ... 
- valgrind的callgrind工具进行多线程性能分析
		1.http://valgrind.org/downloads/old.html 2.yum install valgrind Valgrind的主要作者Julian Seward刚获得了今年的Goo ... 
- 利用Chrome的Performance工具排查页面性能问题(原叫timeline)
		当页面中发生卡顿,最先考虑的是swf文件造成的卡顿,经过排查发现不是swf造成的影响,利用Chrome的Performance工具发现页面中的一些元素不断在重新布局,造成潜在的性能瓶颈. 首先在Chr ... 
- Python 性能分析工具简介
		Table of Contents 1. 性能分析和调优工具简介 1.1. Context Manager 1.2. Decorator 1.3. 系统自带的time命令 1.4. python ti ... 
- cProfile——Python性能分析工具
		Python自带了几个性能分析的模块:profile.cProfile和hotshot,使用方法基本都差不多,无非模块是纯Python还是用C写的.本文介绍cProfile. 例子 import t ... 
随机推荐
- T1229 数字游戏   codevs
			http://codevs.cn/problem/1229/ 题目描述 Description Lele 最近上课的时候都很无聊,所以他发明了一个数字游戏来打发时间. 这个游戏是这样的,首先,他拿出 ... 
- Nginx常用命令(启动/重启/停止/测试配置文件/重新加载配置文件)
			Nginx 安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对 Nginx 进程本身进行控制的. Nginx 的参数包括有如下几个: 使用: /usr/local/ngin ... 
- KernelHacking
			https://kernelnewbies.org/KernelHacking-HOWTO/Debugging_Kernel 
- PostgreSQL SystemTap on Linux
			http://digoal126.wap.blog.163.com/w2/blogDetail.do;jsessionid=3949B03DE151DA0E55D807466C5E630B.yqblo ... 
- Android开发—智能家居系列】(二):用手机对WIFI模块进行配置
			在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的.有图为证,哈哈. 上一篇文章[Android开发—智能家居系列](一):智能家居原理的文末总结中写到: 手机APP控制智能温控器 ... 
- Mac电脑解压文件unrar用密码问题解决
			下载了一个rar文件,有密码的,你懂的. 但是在mac上面,用unrar解压,只能解出空文件:用izip解压,直接停在那里不动. 只好上网搜索.找到了办法. 用brew 安装了命令行版本的 unrar ... 
- git 更新远程分支
			使用git的时候,有时候会出现远端更新了一个分支,但是从本地想checkout一个远程分支时,会出现如下错误: fatal: git checkout: updating paths is incom ... 
- 锤子Smartisan T1手机官方4.4.2系统内核版本号信息
			从锤子smartisan T1手机官方系统EGL中获取内核版本号信息(由cofface提供): I/Adreno-EGL( 816): <qeglDrvAPI_eglInitialize:41 ... 
- TCP 的那些事儿(下)(转)
			TCP的RTT算法 从前面的TCP的重传机制我们知道Timeout的设置对于重传非常重要, 设长了,重发就慢,没有效率,性能差: 设短了,重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多 ... 
- [转载]php 数组 类对象 值传递 引用传递 区别
			一般的数据类型(int, float, bool)不做这方面的解说了 这里详细介绍一下数组和的类的对象作为参数进行值传递的区别 数组值传递 实例代码: <?php function main() ... 
