zoukankan      html  css  js  c++  java
  • 利用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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    无重复字符的最长子串
    最长公共前缀
    项目开发的 工程化
    包管理 import debug 模块管理 module
    Third Party Browser Drivers NOT DEVELOPED by seleniumhq
    任何不看源码的代码引入都是存在定时爆炸的可能
    博客数计数
    lineage 世系 血缘 容错机制 DAG
    查源码分析 游标 写 需要 cursors 一切不看源码的代码引入都是定时炸弹的启动
    8核 16g 及时释放内存空间
  • 原文地址:https://www.cnblogs.com/ExMan/p/10165663.html
Copyright © 2011-2022 走看看