日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python利用memory_profiler查看內存占用情況_python

作者:玩轉測試開發 ? 更新時間: 2022-08-19 編程語言

簡介

memory_profiler是第三方模塊,用于監視進程的內存消耗以及python程序內存消耗的逐行分析。它是一個純python模塊,依賴于psutil模塊。

安裝

pip install memory_profiler

使用方法

1、通過裝飾器運行

@profile
def func1():

2、通過命令行運行

python -m memory_profiler test_code.py

案例源碼:

# -*- 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運行結果:

方法2運行結果:

補充

下面小編為大家整理了一下memory_profiler的一些使用

1、直接打印結果到終端上

#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、定義輸出到文件,定義結果保留的小數位

#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)?

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

欄目分類
最近更新