[tools] cprofile & scalene

查看程序时间的瓶颈咋哪里,好提升效率。 cprofile 配合snakeviz一起用 python m cProfile o run.prof myscript.py to generate profile data snakeviz run.prof to view profile results scalene https://github.com/pl

查看程序时间的瓶颈咋哪里,好提升效率。

cprofile

配合snakeviz一起用

python -m cProfile -o run.prof myscript.py # to generate profile data
snakeviz run.prof # to view profile results

scalene

https://github.com/plasma-umass/scalenegithub.com/plasma-umass/scalene

pip install -U scalene

scalene your_prog.py  

scalene --cpu your_prog.py                       # only profile CPU
scalene --cpu --gpu your_prog.py                 # only profile CPU and GPU
scalene --cpu --gpu --memory your_prog.py        # profile everything (same as no options)

也可以作为decorator在function上用

# do not import profile!

@profile
def slow_function():
    import time
    time.sleep(3)

速度和准确性上好于其它同类

添加图片注释,不超过 140 字(可选)

scalene的output是在当前目录下的也给profile.html

打开之后,长这样:

添加图片注释,不超过 140 字(可选)

内存

  • Python 内存(绿色深色部分) 由 Python 对象分配 的内存,比如 list、dict、str、numpy 数组等 这些是通过 Python 的内存管理器(pymalloc)或直接 malloc 出来的 Python 对象
  • Native 内存(绿色浅色部分) 不是 Python 自己分配的,而是底层 C/C++ 扩展 或外部库分配的 典型例子:NumPy / Pandas 在 C 层分配的大数组

API 优化

输入api key,可以点击func前爆炸的符号来优化代码。

排序

点一下column name,就可以排序。下图是按照时间排序。

添加图片注释,不超过 140 字(可选)