python查看函数消耗的内存_如何查看内存占用和运行速度
问题描述
1、Python开发的程序在使用过程中很慢,想确定下是哪段代码比较慢;
2、Python开发的程序在使用过程中占用内存很大,想确定下是哪段代码引起的;
解决方案
使用profile分析分析cpu使用情况
可以使用profile和cProfile对python程序进行分析,这里主要记录下cProfile的使用,profile参考cProfile即可。
#slots_test.py
classFoobar(object):__slots__=('x')def __init__(self, x):
self.x=xdefmain():
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 installpsutil
pipinstall memory_profiler
1.不导入模块
python -m memory_profiler slots_test.py
不加 -m memory_profiler会报错
2.导入模块
#slots_test.py
from memory_profiler importprofileclassFoobar(object):__slots__=('x')def __init__(self, x):
self.x=x
@profiledefmain():
f= [Foobar(42) for i in range(1000000)]if __name__ == "__main__":
main()
python slots_test.py
python查看函数消耗的内存_如何查看内存占用和运行速度相关推荐
- linux查看内存_嵌入式操作系统的内存,你了解多少?
关注.星标公众号,不错过精彩内容 来源:EDN电子技术设计 linux 内存是后台开发人员,需要深入了解的计算机资源.合理的使用内存,有助于提升机器的性能和稳定性.本文主要介绍 linux 内存组织结 ...
- python内置函数源码_如何查看python内置函数源码
在用Python进行各种分析的时候,我们会用到各种各样的函数,比如,我们用SQL时,经常使用join.max等各种函数,那么想看Python是否有这个函数,这个时候可能大部分人会百度,那么如何不使用百 ...
- python中函数的可变参数_简单谈谈Python中函数的可变参数
前言 在Python中定义函数,可以用必选参数.默认参数.可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. ...
- python怎么看安装到哪_怎么查看python的安装路径
摘要 腾兴网为您分享:怎么查看python的安装路径,小米音乐,图乐,腾讯新闻,淑女网等软件知识,以及dnf雪人套补丁,txt全本小说书城,刷赞平台,noiseware,郑州公务员网络培训学院,微博评 ...
- java代码耗尽内存_有关Java内存溢出及内存消耗的小知识
内存溢出原理: 我们知道,Java程序本身是不能直接在计算机上运行的,它需要依赖于硬件基础之上的操作系统和JVM(Java虚拟机). Java程序启动时JVM都会分配一个初始内存和最大内存给这个应用程 ...
- 怎么查看mysql帮助文档_高效查看MySQL帮助文档的方法
在mysql的使用过程中, 可能经常会遇到以下问题: 某个操作语法忘记了, 如何快速查找? 如何快速知道当前版本上某个字段类型的取值范围? 当前版本都支持哪些函数?希望有例子说明.. 当前版本是否支持 ...
- mysql数据库映射到内存_基于共享内存的数据库映射
基于共享内存的数据库映射 概述 随着各类行业软件对性能追求越来越高,因此对数据库处理的速度提出了新的挑战.然而大部分复杂的业务处理往往依赖体量较大的关系数据(如:Oracle,Mysql,Postgr ...
- nginx内存池大小快内存_使用直接内存时可以更快
nginx内存池大小快内存 总览 使用直接内存不能保证提高性能. 考虑到它增加了复杂性,除非有充分的理由使用它,否则应避免使用它. 塞尔吉奥·奥利维拉(Sergio Oliveira Jr)的这篇出色 ...
- showdialog 尝试读取或写入受保护的内存_超频内存比超频CPU收益更大!影驰HOF OC Lab皑钻DDR4-4400评测...
一.前言:名人堂超频实验室打造HOF OC Lab皑钻 最高可达5000MHz 超频对于DIY而言意味着什么呢?或许你可以说,DIY究极的追究就是极限的超频!早在2013年,影驰就创立了全球首家专业的 ...
- java final 内存_聊聊 Java 内存模型
原标题:聊聊 Java 内存模型 *作者:青芒@有赞 本文目录 Java内存模型 重排序 内存屏障 volatitle的内存语义 final的内存语义 一.Java内存模型 硬件处理 电脑硬件,我们知 ...
最新文章
- STM32为何能在众多单片机中脱颖而出?
- 国际计算机思维比赛,少儿编程领域中,你所不知道的国际计算思维大赛
- Vivado2015.4使用教程(一个完成工程的建立)
- github项目怎么运行_利用 GitHub 从零开始搭建一个博客
- 让企业零成本拥有自己独立的企业网站不再是问题...
- 第三章 阴阳的工作机制(1)
- 解决安卓SDK无法下载Package的问题
- Laravel源码解析之Eloquent Model
- Laravel源码解析之Request
- 程序员:下一次面试前你需要准备的五个基本步骤
- Java开源内容管理CMS系统J4CMS集成到JTM
- 如果面试官问您还有什么问题要问的,应该如何巧妙的回答才算合适呢?
- Mob免费短信验证教程
- linux看oracle数据库实例,oracle数据库实例的创建[linux]
- Visual Studio快捷键大全
- Codewars笔记
- krpano使用示例
- php密钥,php – 唯一的密钥生成
- 【Codecs系列】GDR(Gradual Decoder Refresh)帧
- php怎么安装ecshop,ECSHOP4.0安装教程【ECSHOP4.0安装流程方法】ECSHOP4.0安装步骤-ECSHOP教程网...