首頁 > 軟體

Python利用memory_profiler檢視記憶體佔用情況

2022-06-28 14:02:24

簡介

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) 

到此這篇關於Python利用memory_profiler檢視記憶體佔用情況的文章就介紹到這了,更多相關Python memory_profiler檢視記憶體佔用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com