Python内存分析工具:memory_profiler

上官网地址:https://pypi.org/project/memory-profiler/

安装: pip install -U memory_profiler

使用:

方式一,直接运行文件,或者命令行运行:

# _*_coding:utf-8_*_
# Python程序内存分析
from memory_profiler import profile


@profile(precision=4)  # 统计内存的精度
def my_func():
    import time
    a = [1, 3, 4, 5]
    for i in a:
        pass
    return time.time()


if __name__ == '__main__':
    my_func()

python -m memory_profiler script.py

***命令行运行会丢失精度***


方式二:将结果输出到日志文件

# _*_coding:utf-8_*_
# Python程序内存分析
from memory_profiler import profile


# 使用装饰器,配置精度,将结果输出到日志
@profile(precision=4, stream=open("memory_profiler.log", "w+"))
def my_func():
    import time
    a = [1, 3, 4, 5]
    for i in a:
        pass
    return time.time()


if __name__ == '__main__':
    my_func()

方式三:mprof 使用

mprof的可用命令是:

  • mprof run:运行可执行文件,记录内存使用情况
  • mprof plot:绘制一个记录的内存使用情况(默认情况下,最后一个)
  • mprof list:以用户友好的方式列出所有记录的内存使用情况文件。
  • mprof clean:删除所有记录的内存使用情况文件。
  • mprof rm:删除特定记录的内存使用情况文件
mprof run script.py   # 运行程序,会生成一个结果数据文件
mprof plot # 根据最后一条数据文件生成图表

跟踪子进程

方式一:总结所有子进程的内存和父进程的使用情况并跟踪每个子进程
mprof run --include-children <script>



方式二:独立于主进程跟踪每个子进程,通过索引将子行序列化到输出流。使用多进程

mprof run --multiprocess <script> 

设置调试器断点

可以根据使用的内存量设置断点。也就是说,您可以指定一个阈值,一旦程序使用的内存超过阈值中指定的内存,它将停止执行并运行到 pdb 调试器中。要使用它,您必须使用@profile装饰上一节中完成的函数,然后使用选项-m memory_profiler --pdb-mmem=X运行您的脚本,其中 X 是一个数字,表示以 MB 为单位的内存阈值. 例如:

$ python -m memory_profiler --pdb-mmem=100 my_script.py

一旦代码在装饰函数中使用超过 100 MB,将运行my_script.py并进入 pdb 调试器。


应用程序接口

# _*_coding:utf-8_*_
# Python程序内存分析
from memory_profiler import profile, memory_usage


# 使用装饰器,配置精度,将结果输出到日志
# @profile(precision=4, stream=open("memory_profiler.log", "w+"))
def my_func():
    import time
    a = [1, 3, 4, 5]
    for i in a:
        pass
    return time.time()


# proc=-1  为当前进程
# interval 以1秒的间隔获取timeout时间内的内存使用情况
me = memory_usage(proc=-1, interval=1, timeout=10)


if __name__ == '__main__':
    # my_func()
    print(me)

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值