4个python内存性能检测工具:memory_profiler、timeit、line_profiler、heartrate的使用案例

news2025/1/11 18:47:25

这里总结了4个比较好的python性能检测工具,包括内存使用、运行时间、执行次数等方面。

1、memory_profiler查看内存的使用情况

memory_profiler可以用来测量python进程的内存使用情况。可以按行查看内存的使用情况。

memory_profiler 是一个监控进程内存消耗的模块,可以逐行分析 Python 程序的内存消耗。它是一个依赖 psutil 模块的纯 Python 模块。

只需要在目标函数上加个装饰器 @profile,就可以实现对此函数内存使用的统计。

安装:pip install -U memory_profiler

官方文档:https://pypi.org/project/memory-profiler/

案例1,脚本如下:

from memory_profiler import profile

@profile
def base_func1():
    for n in range(10000):
        print(f'当前n的值是:{n}')


base_func1()

# 从返回的数据结果来看,执行当前函数使用了45.3 MiB的内存。返回结果如下:
# Line #    Mem usage    Increment  Occurrences   Line Contents
# =============================================================
#     28     45.3 MiB     45.3 MiB           1   @profile
#     29                                         def base_func():
#     30     45.3 MiB      0.0 MiB       10001       for n in range(10000):
#     31     45.3 MiB      0.0 MiB       10000           print('当前n的值是:{}'.format(n))

案例2,脚本如下:

# -*- encoding: utf-8 -*-
from memory_profiler import profile


@profile
def my_func():
    a = [1] * (10 ** 6)
    b = [2] * (2 * 10 ** 7)
    del b
    return a


if __name__ == '__main__':
    my_func()

执行结果如下图:
在这里插入图片描述

2、timeit 时间使用情况

timeit是python的内置模块,可以测试单元格的代码运行时间,由于是内置模块所以并不需要单独安装。

import timeit

def base_func2():
    for n in range(10000):
        print(f'当前n的值是:{n}')

res = timeit.timeit(base_func2,number=5)

print(f'当前的函数的运行时间是:{res}')

# 执行结果如下:
# 0.09903816704172641

3、line_profiler行代码运行时间检测

官方文档:https://pypi.org/project/line-profiler/

安装:pip install line_profiler

from line_profiler import LineProfiler


def base_func3():
    for n in range(10000):
        print(f'当前n的值是:{n}')


lp = LineProfiler()
lp_wrap = lp(base_func3)
lp_wrap()
lp.print_stats()

"""
执行结果如下:(单位时间为微妙)
Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     1                                           def base_func3():
     2     10000    1538000.0    153.8      2.8      for n in range(10000):
     3     10000   53417000.0   5341.7     97.2          print('当前n的值是:{}'.format(n))"""

4、heartrate可视化检测工具

heartrate最值得推荐的是可以在网页上面向检测心率一样检测程序的执行过程,是非标准库,2019年11月停止更新。

文档:https://www.cnpython.com/pypi/heartrate

安装:pip install heartrate

使用案例:

import heartrate

heartrate.trace(browser=True)

def base_func4():
    for n in range(10000):
        print(f'当前n的值是:{n}')

执行完会在浏览器上显示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/467122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于cv2的手势识别-计算机视觉

闲的无聊做的一个小玩意,可以调用你的计算机相机,识别框内的手势(剪刀、石头和布),提供一个判决平台,感兴趣的可以继续完善。 用到的参考小文献: 具体实现结果如下 并且我另写了一个框架平台&…

风雨30年,电子表格惊人跨越,excel用户:表格都能生成软件了

电子表格,绝不是你看到的样子! 你知道电子表格的前世今生吗? 它绝不只是你现在看到Excel或者WPS的模样。 不同的时代,有着不同的样子 DOS时代没有什么“可见可得”。什么都是靠想象力的,就是屏幕上文档的显示和打印…

供应商管理怎么做?供应商管理办法及流程介绍

阅读本文你将了解:1、供应商管理的重要性(供应商管理的痛点);2、供应商管理具体流程;供应商管理系统有什么作用。 一、供应商管理的重要性(供应商管理的痛点) 供应商管理是组织中至关重要的一环…

锂溶液净化和提纯

锂离子电池是一种充电电池,依靠锂离子在正极和负极之间移动来工作,广泛应用在便携式设备、卫星、储备电源、电动汽车等领域,具有替代各种二次电源的潜力。 近年来国家大力提倡和发展的新能源产业,锂离子电池的需求量的不断攀升&a…

三维实景模型在线浏览平台,在线编辑、在线分享各类地理空间数据

很多行业用户在获取了大量的三维实景模型数据后,想要进行在线浏览或者分享给他人查看,以往只能通过人工手动将模型压缩,不但耗时费力,效果还难以达到预期。 其实,只需要通过四维轻云地理空间数据云管理平台就能轻松实…

DataX数据同步工具使用

1.DataX 简介 DataX 是阿里云 DataWorks 数据集成 的开源版本,主要就是用于实现数据间的离线同步。 DataX 致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等 各种异构数据源(即不同的数据库&…

# Linux shell终端设置代理服务器的方法

Linux shell终端设置代理服务器的方法 文章目录 Linux shell终端设置代理服务器的方法1 变量列表2 设置方法2.1 设置代理2.2 测试代理 3 软件专用代理3.1 yum专用代理3.2 git专用代理3.3 wget专用代理3.4 curl专用代理3.5 pip专用代理3.6 aria2c专用代理 4 最后 通过设置Linux变…

三个方法教你快速找到LinkedIn领英的潜在客户(置顶收藏)

第三点–最后一点是重点,要看到最后 相信很多外贸业务员都有这样的问题:“为什么你运营的账户询问的人数那么多,我自己运营的账户却没有人问呢?你是不是有什么好的运营技巧啊,可以给我说一下吗?”事实上&a…

Shell编程循环语句for while until(心有所觉,但亦做不解)

一、for 循环 1.用法和特点 读取不同的变量值,用来逐个执行同一组命令 for循环经常使用在已经知道要进行多少次循环的场景 for 变量 in 取值列表 -- 默认取值分割符(空格、制表符、换行符)do 或 {命令序列 done 或 }2.执行指…

时序预测 | Matlab实现SSA-BiLSTM、BiLSTM麻雀算法优化双向长短期记忆神经网络时间序列预测(含优化前后对比)

时序预测 | Matlab实现SSA-BiLSTM、BiLSTM麻雀算法优化双向长短期记忆神经网络时间序列预测(含优化前后对比) 目录 时序预测 | Matlab实现SSA-BiLSTM、BiLSTM麻雀算法优化双向长短期记忆神经网络时间序列预测(含优化前后对比)预测效果基本介绍程序设计参考资料 预测效果 基本介…

数学中为什么要研究各种各样的变换?

从信号处理角度来说 分析平稳信号所蕴涵的信息, 一般地Fourier 变换就能应付自如。但以不稳定动力系统为特征的物理世界, 信号往往具有如下特点: 非平稳、非线性、非确定、非可积、非连续、非光滑、非周期、非对称等等。使用Fourier 变换分析、解释非平稳信号, 就显得无能为力…

【日志系列】日志框架Log4j2源码解析

初始化 LoggerFactory private static final Logger logger LoggerFactory.getLogger(LogFilter.class);LoggerFactory#getLogger() public static Logger getLogger(Class<?> clazz) {Logger logger getLogger(clazz.getName());if (DETECT_LOGGER_NAME_MISMATCH) {…

设计模式 Map+函数式接口减少if else

参考资料 代码优雅之道——如何干掉过多的if else 目录 一. 前期准备1.1 标记邮箱种类的接口1.2 邮箱类型区分类1.3 入参Form实体类 二. 邮件发送的业务聚合类三. 定义函数式接口&#xff0c;创建邮件发送的Map四. 效果 一. 前期准备 1.1 标记邮箱种类的接口 import java.la…

一文让你真正了解正则表达式

1 正则表达式是什么 正则表达式(Regular Expression)其实就是一门工具&#xff0c;目的是为了字符串模式匹配&#xff0c;从而实现搜索和替换功能。它起源于上个20世纪50年代科学家在数学领域做的一些研究工作&#xff0c;后来才被引入到计算机领域中。从它的命名我们可以知道…

3自由度并联绘图机器人实现写字功能(二)

1. 功能说明 本文示例将实现R305b样机3自由度并联绘图机器人写字的功能。本实验使用的样机是用探索者兼容零件制作的。 2. 电子硬件 在这个示例中&#xff0c;采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09; 扩…

Visual Studio C# WinForm开发入门(5):TabControl 控件使用

TabContrl选项卡控件可创建标签化窗口&#xff0c;在实际 编程中经常用到&#xff0c;该控件的作用是将相关的组件组合到一系列选项卡页面上。 比如下面的例子&#xff0c;在tabPage1页面和tabPage2页面各放了2个checkBox控件&#xff0c;通过点击不同page即可切换&#xff1a;…

交叉编译工具

工具链有一个松散的名称约定&#xff0c;如 arch[-vendor][-os]-abi-language . arch 适用于架构&#xff0c;编译器用于哪个目标平台&#xff1a; arm &#xff0c; mips &#xff0c; x86 &#xff0c; i686 ... vendor 是工具链供应商&#xff0c;以厂家名称命名的&#xf…

权威学者、企业CFO荟聚上海国家会计学院,共探「智能会计 价值财务」

4月21日&#xff0c;由用友主办的「智能会计 价值财务」2023企业数智化财务创新峰会在上海国家会计学院圆满举办。学院权威教授、业内专家与来自央国企、行业领先企业的财务先锋&#xff0c;线下云端共聚一堂&#xff0c;数万人共探大型企业财务数智化的全新价值主张。 会议伊始…

WLAN - 五大安全措施

文章目录 1 概述2 五大安全措施2.1 SSID 访问控制2.2 物理地址过滤 MAC2.3 有线等效保密 WEP2.4 WPA&#xff08;IEEE 802.11i 草案&#xff09;2.5 WPA2&#xff08;IEEE 802.11i&#xff09; 3 扩展3.1 网工软考真题 1 概述 无线局域网面临着两个主要问题&#xff0c;一是增…

【Unity入门】19.定时调用Invoke

【Unity入门】定时调用Invoke 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;计时器 &#xff08;1&#xff09;Invoke 单词调用 计时器我们并不陌生&#xff0c;在cocos上有着schedule类是…