脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python利用memory_profiler查看内存占用情况

Python利用memory_profiler查看内存占用情况

2022-06-28 10:59玩转测试开发 Python

memory_profiler是第三方模块,用于监视进程的内存消耗以及python程序内存消耗的逐行分析。本文将利用memory_profiler查看代码运行占用内存情况,感兴趣的可以了解一下

简介

memory_profiler是第三方模块,用于监视进程的内存消耗以及python程序内存消耗的逐行分析。它是一个纯python模块,依赖于psutil模块。

安装

?
1
pip install memory_profiler

使用方法

1、通过装饰器运行

?
1
2
@profile
def func1():

2、通过命令行运行

?
1
python -m memory_profiler test_code.py

案例源码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# -*- coding: utf-8 -*-
# time: 2022/6/11 21:17
# file: test_code.py
# 公众号: 玩转测试开发
from memory_profiler import profile
 
loop = 50000
 
 
@profile
def func1():
    s1 = [i for i in range(loop)]
    s2 = []
    for i in range(loop):
        if i & 1 == 1:
            s2.append(i)
    result = sum(s1) + sum(s2)
    del s1
    del s2
    return result
 
 
if __name__ == '__main__':
    result = func1()
    print(result)

方法1运行结果:

Python利用memory_profiler查看内存占用情况

方法2运行结果:

Python利用memory_profiler查看内存占用情况

补充

下面小编为大家整理了一下memory_profiler的一些使用

1、直接打印结果到终端上

?
1
2
3
4
5
6
7
8
9
10
11
12
#coding:utf8
from memory_profiler import profile
 
@profile
def test1():
    c=list()
    for item in range(10000):
        c.append(item)
 
 
if __name__=='__main__':
    test1()

结果如下

Filename: D:/python/test_sip/test_check_es.py 
 
Line #    Mem usage    Increment   Line Contents 
================================================ 
   474     16.6 MiB     16.6 MiB   @profile 
   475                             def test1(): 
   476     16.6 MiB      0.0 MiB       c=list() 
   477     17.0 MiB      0.0 MiB       for item in range(10000): 
   478     17.0 MiB      0.1 MiB           c.append(item) 

2、定义输出到文件,定义结果保留的小数位

?
1
2
3
4
5
6
7
8
9
10
11
12
#coding:utf8
from memory_profiler import profile
 
@profile(precision=4,stream=open('memory_profiler.log','w+'))
def test1():
    c=list()
    for item in range(10000):
        c.append(item)
 
 
if __name__=='__main__':
    test1()

结果如下

Filename: D:/python/test_sip/test_check_es.py 
 
Line #    Mem usage    Increment   Line Contents 
================================================ 
   474  16.5391 MiB  16.5391 MiB   @profile(precision=4,stream=open('memory_profiler.log','w+')) 
   475                             def test1(): 
   476  16.5430 MiB   0.0039 MiB       c=list() 
   477  16.8906 MiB   0.0039 MiB       for item in range(10000): 
   478  16.8906 MiB   0.0391 MiB           c.append(item) 

到此这篇关于Python利用memory_profiler查看内存占用情况的文章就介绍到这了,更多相关Python memory_profiler查看内存占用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/hzblucky1314/article/details/125494000

延伸 · 阅读

精彩推荐