利用4行Python代码监测每一行程序的运行时间和空间消耗


Posted in Python onApril 22, 2020

Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,其具有高可扩展性和高可移植性,具有广泛的标准库,受到开发者的追捧,广泛应用于开发运维(DevOps)、数据科学、网站开发和安全。然而,它没有因速度和空间而赢得任何称赞,主要原因是Python是一门动态类型语言,每一个简单的操作都需要大量的指令才能完成。

所以这更加需要开发者在使用Python语言开发项目时协调好程序运行的时间和空间。

利用4行Python代码监测每一行程序的运行时间和空间消耗

1、分析时间耗时

分析项目消耗的时间消耗,依托于line_profiler模块,其可以计算出执行每行代码所需占用的CPU时间。

第1步:安装line_profiler模块,我是用pip安装一直失败,所以下载到本地进行离线安装,指令如下所示:

pip install .\line_profiler-3.0.2-cp37-cp37m-win_amd64.whl

安装成功效果如下所示:

利用4行Python代码监测每一行程序的运行时间和空间消耗

第2步:分析每行代码的运行时间,本案例Demo检测for循环一万次累加和while循环一万次累加的时间,并进行对比,实现代码如下所示:

from line_profiler import LineProfiler
 
def operation1():
 num=0
 for i in range(10000):
  num += 1
 
def operation2():
 num=0
 while(num < 10000):
  num += 1
 
if __name__ == "__main__":
 lprofiler = LineProfiler(operation1,operation2)
 lprofiler.run('operation1()')
 lprofiler.run('operation2()')
 lprofiler.print_stats()

运行程序,可见while循环速度稍微慢一些,效果如下所示:

利用4行Python代码监测每一行程序的运行时间和空间消耗

2、分析空间耗时

memory_profiler模块可实现对Python项目中每一个代码的内存消耗进行分析和监控。

第1步:安装memory_profiler库文件,指令如下所示:

pip install memory_profiler

安装成功效果如下所示:

利用4行Python代码监测每一行程序的运行时间和空间消耗

第2步:分析每行代码的空间消耗,本案例Demo检测for循环一万次累加和while循环一万次累加的消耗空间,并进行对比,实现代码如下所示:

from memory_profiler import profile
 
@profile
def operation1():
 num=0
 for i in range(10000):
  num += 1
 
@profile
def operation2():
 num=0
 while(num < 10000):
  num += 1
 
if __name__ == "__main__":
 operation1()
 operation2()

由于是简单运算消耗的内存是微乎其微的,效果如下所示:

利用4行Python代码监测每一行程序的运行时间和空间消耗

本篇博文仅介绍以上两种模块,其实有更多有意思的模块可以实现对程序的运行时间和空间消耗的监测,感兴趣的朋友可以多多尝试。

到此这篇关于利用4行Python代码监测每一行程序的运行时间和空间消耗的文章就介绍到这了,更多相关python 监测程序运行时间空间消耗内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的对象,方法,类,实例,函数用法分析
Jan 15 Python
使用Python编写一个模仿CPU工作的程序
Apr 16 Python
利用python爬取软考试题之ip自动代理
Mar 28 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
python类的实例化问题解决
Aug 31 Python
python manage.py runserver流程解析
Nov 08 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
详解python安装matplotlib库三种失败情况
Jul 28 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 Python
Python try except else使用详解
Jan 12 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 #Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 #Python
django使用JWT保存用户登录信息
Apr 22 #Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 #Python
Django如何使用jwt获取用户信息
Apr 21 #Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 #Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 #Python
You might like
php REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
Prototype中dom对象方法汇总
2008/09/17 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python实现周期性抓取网页内容的方法
2015/11/04 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Java模拟试题
2014/11/10 面试题
如何做好总经理助理
2013/11/12 职场文书
单位消防安全制度
2014/01/12 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
后勤主管岗位职责
2014/03/01 职场文书
品质主管岗位职责
2014/03/16 职场文书
运动会方队口号
2014/06/07 职场文书
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技