python函数调用关系分析

在Pycharm的专业版中,提供了一个分析项目性能的工具run->Profile,可以将工程运行时各函数的调用次数和所用时间记录下来,提供静态数据和关系图表两种表达方式。

只需轻轻一点,统计数据和图表关系一览无遗,确实方便。但是此方法局限性很大,一是必须使用pycharm,这样使用其他ide如VS Code的用户就没法使用了;二是它不仅要使用pychram,还得是专业版,专业版是要收费的(破解和学生版除外),这又是一道坎挡在了我们的路上。那么有其他的方法来进行类似的分析吗?当然是有的。


profile

profile可以分析函数运行时的性能消耗情况,调用方法如下:

import profile
profile.run("main()")

main()即为需要分析的入口函数,以字符串形式传入。运行之后可以得到如下的输出:

19 function calls in 0.000 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 :0(exec)
        4    0.000    0.000    0.000    0.000 :0(len)
        4    0.000    0.000    0.000    0.000 :0(print)
        1    0.000    0.000    0.000    0.000 :0(setprofile)
        2    0.000    0.000    0.000    0.000 :0(sleep)
        1    0.000    0.000    0.000    0.000 <string>:1(<module>)
        1    0.000    0.000    0.000    0.000 profile:0(main())
        0    0.000             0.000          profile:0(profiler)
        1    0.000    0.000    0.000    0.000 test.py:1(next_cal)
        1    0.000    0.000    0.000    0.000 test.py:16(__init__)
        1    0.000    0.000    0.000    0.000 test.py:19(search_string)
        1    0.000    0.000    0.000    0.000 test.py:36(__next_arr)
        1    0.000    0.000    0.000    0.000 test.py:51(main)

虽然函数调用情况可以得到的,但是分析起来比较麻烦,函数之间的调用关系也没有给出。此方式虽然简单但是不够直观。


pycallgraph

在pycallgraph之前不得不先提及一下**Graphviz**,毕竟pycallgraph是基于Graphviz的。Graphviz是开源的图形可视化软件,能够将结构信息表示为抽象图和网络图的方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值