码迷,mamicode.com
首页 > 其他好文 > 详细

如何查看内存占用和运行速度

时间:2019-02-19 01:21:27      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:href   解决   color   ima   报错   profiler   mamicode   user   分析   

问题描述

1、Python开发的程序在使用过程中很慢,想确定下是哪段代码比较慢;

2、Python开发的程序在使用过程中占用内存很大,想确定下是哪段代码引起的;

 

解决方案

使用profile分析分析cpu使用情况

可以使用profile和cProfile对python程序进行分析,这里主要记录下cProfile的使用,profile参考cProfile即可。

#slots_test.py
class Foobar(object):
    __slots__=(x)
    def __init__(self, x):
        self.x = x
 

def main():
    f = [Foobar(42) for i in range(1000000)]
 
if __name__ == "__main__":
    main()

1.简单查看

python -m cProfile slots_test.py

技术图片

2.不修改程序

python -m cProfile -o test1.out slots_test.py
python -c "import pstats; p=pstats.Stats(‘test1.out‘); p.print_stats()"

查看排序后的结果:

python -c "import pstats; p=pstats.Stats(‘test1.out‘); p.sort_stats(‘time‘).print_stats()"

技术图片

 

结果说明

ncalls : 函数的被调用次数
tottime :函数总计运行时间,除去函数中调用的函数运行时间
percall :函数运行一次的平均时间,等于tottime/ncalls
cumtime :函数总计运行时间,含调用的函数运行时间
percall :函数运行一次的平均时间,等于cumtime/ncalls
filename:lineno(function) 函数所在的文件名,函数的行号,函数名

使用memory_profiler分析内存使用情况

需要安装memory_profiler :

pip install psutil
pip install memory_profiler

 

1.不导入模块

技术图片

 

python -m  memory_profiler slots_test.py

 技术图片

不加 -m memory_profiler会报错

技术图片

2.导入模块

#slots_test.py
from memory_profiler import profile

class Foobar(object):
    __slots__=(x)
    def __init__(self, x):
        self.x = x
 
@profile
def main():
    f = [Foobar(42) for i in range(1000000)]
 
if __name__ == "__main__":
    main()

 

python  slots_test.py

 

技术图片

 

如何查看内存占用和运行速度

标签:href   解决   color   ima   报错   profiler   mamicode   user   分析   

原文地址:https://www.cnblogs.com/wqbin/p/10398674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!