示例代码
|
|
1. cProfile
cProfile是profile模块的c语言实现,二者实现的功能相同,但是cProfile的性能更佳。
使用方法:
|
~ python -m cProfile test.py
20132542 function calls (8 primitive calls) in 7.342 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
20132537/3 7.342 0.000 7.342 2.447 test.py:1(
1 0.000 0.000 7.342 7.342 test.py:1(
1 0.000 0.000 6.707 6.707 test.py:12(test3)
1 0.000 0.000 0.006 0.006 test.py:4(test1)
1 0.000 0.000 0.630 0.630 test.py:8(test2)
1 0.000 0.000 0.000 0.000 {method ‘disable’ of ‘_lsprof.Profiler’ objects}
cumtime | 累计调用总时长,本函数以及本函数的递归调用累计调用时长
percall | 累计平均调用时长,其实就是
接着,需要指定用
最好,可以通过下面的命令获得关于
其中-l表示逐行解释,-v表示表示输出详细结果。
需要注意的是,
同
~ python -m memory_profiler test.py
Filename: test.py
Line # Mem usage Increment Line Contents
3 34.945 MiB 34.945 MiB @profile
4 def test1():
5 34.945 MiB 0.000 MiB a=10
6 34.953 MiB 0.008 MiB fib(20)
Filename: test.py
Line # Mem usage Increment Line Contents
9 34.953 MiB 34.953 MiB @profile
10 def test2():
11 34.961 MiB 0.008 MiB fib(30)
Filename: test.py
Line # Mem usage Increment Line Contents
14 34.961 MiB 34.961 MiB @profile
15 def test3():
16 34.961 MiB 0.000 MiB fib(35)
Filename: test.py
Line # Mem usage Increment Line Contents
18 34.938 MiB 34.938 MiB @profile
19 def main():
20 34.953 MiB 34.953 MiB test1()
21 34.961 MiB 34.961 MiB test2()
22 34.961 MiB 34.961 MiB test3()
```
标题 | 含义 |
---|---|
Line # | 代码行号 |
Mem usage | 内存使用数量 |
Increment | 本行代码新增内存使用数量 |
Line Content | 实际代码内容 |