最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python利用memory_profiler實現(xiàn)內存分析

 更新時間:2022年10月16日 09:40:19   作者:Sir 老王  
memory_profiler是第三方模塊,用于監(jiān)視進程的內存消耗以及python程序內存消耗的逐行分析。本文將利用memory_profiler實現(xiàn)內存分析,需要的可以參考一下

任何編程語言開發(fā)的項目代碼都是需要考慮內存問題的,有時候當項目體量比較龐大以后若是出現(xiàn)內存泄漏等問題分析起來更是哦力不從心的。

因此,平時建議從開發(fā)的每個函數(shù)入手盡量編寫的標準、規(guī)范,不至于造成后期無法修復的BUG,這個python非標準模塊memory_profiler值得一看。

使用memory_profiler能分析出每行代碼塊的內存資源使用情況,有兩種方式可以參考,一種是開發(fā)完代碼塊通過命令行的方式執(zhí)行即可。

另一種則在直接代碼塊時直接生成內r內存資源情況的日志可以隨時查看。

使用python pip的方式安裝memory_profiler非標準庫,默認使用清華大學的python鏡像站。

pip?install?memory_profiler?-i?https://pypi.tuna.tsinghua.edu.cn/simple/

開發(fā)一個函數(shù)func_while,其中運行一個100萬次的循環(huán)并且在循環(huán)中打印每一次循環(huán)執(zhí)行時的時間戳,將內存使用情況保存到日志文件memory.log中。

#?Importing?the?timeit?module.
import?timeit

#?A?logging?library.
from?loguru?import?logger

#?A?decorator?that?will?wrap?the?function?and?add?some?code?to?it.
from?memory_profiler?import?profile


@profile(precision=4,?stream=open("memory.log",?"w+"))
def?func_while():
????"""
????It?prints?the?numbers?from?0?to?999999.
????"""
????begin?=?timeit.default_timer()
????logger.info("開始循環(huán)應用:{0}".format(begin))

????n?=?0

????while?n?<?1000000:
????????logger.info('當前時間戳:{0}'.format(timeit.default_timer()))
????????n?=?n?+?1

????end?=?timeit.default_timer()
????logger.info("結束循環(huán)應用:{0}".format(end))

????logger.info('循環(huán)應用總共用時:{0}'.format(str(end?-?begin)))

func_while()

# 2022-09-17 22:18:18.767 | INFO ????|?__main__:func_while:39 -?當前時間戳:1397.349649192
# 2022-09-17 22:18:18.769 | INFO ????|?__main__:func_while:39 -?當前時間戳:1397.350927206
# 2022-09-17 22:18:18.770?| INFO ????|?__main__:func_while:39 -?當前時間戳:1397.352256128
# 2022-09-17 22:18:18.771 | INFO ????|?__main__:func_while:39 -?當前時間戳:1397.353639651
# 2022-09-17 22:18:18.773 | INFO ????|?__main__:func_while:39 -?當前時間戳:1397.354919308
# 2022-09-17 22:18:18.774 | INFO ????|?__main__:func_while:43 -?結束循環(huán)應用:1397.35619568
# 2022-09-17 22:18:18.775 | INFO ????|?__main__:func_while:45 -?循環(huán)應用總共用時:1394.6941001149999

從上面的運行時間可以看出整個100萬次的循環(huán)整整跑了23分鐘才完成,本身電腦性能不是很好為了測試差點就宕機了。下面是memory.log內存分析的文件中的部分截圖。

從結果可以發(fā)現(xiàn)在我的while循環(huán)這一行下面的代碼塊整個內存顯示-65303MB左右,可以看出整個內存消耗出現(xiàn)非常大的問題,怪不得的應用的主線程直接就卡死了。

在上面的分析中,我們選用的內存統(tǒng)計的精度是保留四位小數(shù),也就是@profile注解的precision屬性值的設置是4。

接下來使用第二種方式,也就是直接運行查看效果,或者在命令行執(zhí)行.py的python文件效果是一樣的都會展示出內存的消耗情況,但是這種情況可能會出現(xiàn)內存精度缺失的情況。

為了保險起見,這次我還是直接選用1萬次循環(huán)來進行測試查看效果,循環(huán)次數(shù)過多怕把我的操作機直接搞崩潰了!

@profile(precision=4)
def?func_while2():
????"""
????It?prints?the?numbers?from?0?to?9999.
????"""
????begin?=?timeit.default_timer()
????logger.info("開始循環(huán)應用:{0}".format(begin))

????n?=?0

????while?n?<?10000:
????????logger.info('當前時間戳:{0}'.format(timeit.default_timer()))
????????n?=?n?+?1

????end?=?timeit.default_timer()
????logger.info("結束循環(huán)應用:{0}".format(end))

????logger.info('循環(huán)應用總共用時:{0}'.format(str(end?-?begin)))


func_while2()

# 2022-09-17 22:37:38.086 | INFO ????|?__main__:func_while2:81 -?當前時間戳:15.020861643
# 2022-09-17 22:37:38.087 | INFO ????|?__main__:func_while2:85 -?結束循環(huán)應用:15.022343696
# 2022-09-17 22:37:38.089 | INFO ????|?__main__:func_while2:87 -?循環(huán)應用總共用時:12.908313867
#?Filename:?C:/the-public/the-public/test013/test7.py
#
#?Line?#????Mem?usage????Increment??Occurrences???Line?Contents
#?=============================================================
#?????73??29.7266?MiB??29.7266?MiB???????????1???@profile(precision=4)
#?????74?????????????????????????????????????????def?func_while2():
#?????75??29.7266?MiB???0.0000?MiB???????????1???????begin?=?timeit.default_timer()
#???? 76  29.7422 MiB ??0.0156 MiB ????????? 1 ????? logger.info("開始循環(huán)應用:{0}".format(begin))
#?????77
#?????78??29.7422?MiB???0.0000?MiB???????????1???????n?=?0
#?????79
#?????80??29.8125?MiB???0.0000?MiB???????10001???????while?n?<?10000:
#???? 81  29.8125 MiB ??0.0703 MiB ????? 10000?????????? logger.info('當前時間戳:{0}'.format(timeit.default_timer()))
#?????82??29.8125?MiB???0.0000?MiB???????10000???????????n?=?n?+?1
#?????83
#?????84??29.8125?MiB???0.0000?MiB???????????1???????end?=?timeit.default_timer()
#???? 85  29.8125 MiB ??0.0000 MiB ????????? 1 ????? logger.info("結束循環(huán)應用:{0}".format(end))
#?????86
#???? 87  29.8125 MiB ??0.0000 MiB ????????? 1 ????? logger.info('循環(huán)應用總共用時:{0}'.format(str(end - begin)))

顯然執(zhí)行1萬次循環(huán)結果算是正常的,增量只有0.0703 MiB,只用了13秒就執(zhí)行完成了,可能使用for循環(huán)的話效果還要好一些。

到此這篇關于Python利用memory_profiler實現(xiàn)內存分析的兩種方法總結的文章就介紹到這了,更多相關Python memory_profiler內存分析內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python實現(xiàn)信號時域統(tǒng)計特征提取代碼

    python實現(xiàn)信號時域統(tǒng)計特征提取代碼

    今天小編就為大家分享一篇python實現(xiàn)信號時域統(tǒng)計特征提取代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python裝飾器用法實例分析

    Python裝飾器用法實例分析

    這篇文章主要介紹了Python裝飾器用法,結合實例形式分析了帶參數(shù)裝飾器、無參數(shù)裝飾器等相關實現(xiàn)與使用技巧,需要的朋友可以參考下
    2019-01-01
  • PyQt 圖解Qt Designer工具的使用方法

    PyQt 圖解Qt Designer工具的使用方法

    這篇文章主要介紹了PyQt 圖解Qt Designer工具的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python_matplotlib改變橫坐標和縱坐標上的刻度(ticks)方式

    python_matplotlib改變橫坐標和縱坐標上的刻度(ticks)方式

    這篇文章主要介紹了python_matplotlib改變橫坐標和縱坐標上的刻度(ticks)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python生成密碼庫功能示例

    Python生成密碼庫功能示例

    這篇文章主要介紹了Python生成密碼庫功能,涉及Python基于隨機字符串實現(xiàn)的生成密碼功能相關操作技巧,需要的朋友可以參考下
    2017-05-05
  • Python+QTimer計時器實現(xiàn)攝像頭視頻的播放和暫停

    Python+QTimer計時器實現(xiàn)攝像頭視頻的播放和暫停

    這篇文章主要為大家詳細介紹了Python如何通過QTimer計時器實現(xiàn)攝像頭視頻的播放和暫停功能,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • Python Des加密解密如何實現(xiàn)軟件注冊碼機器碼

    Python Des加密解密如何實現(xiàn)軟件注冊碼機器碼

    這篇文章主要介紹了Python Des加密解密如何實現(xiàn)軟件注冊碼機器碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • Python繪制組合圖的示例

    Python繪制組合圖的示例

    這篇文章主要介紹了Python如何繪制組合圖,幫助大家更好的利用python繪制圖像,進行數(shù)據(jù)可視化分析,感興趣的朋友可以了解下
    2020-09-09
  • 詳解Pandas如何高效對比處理DataFrame的兩列數(shù)據(jù)

    詳解Pandas如何高效對比處理DataFrame的兩列數(shù)據(jù)

    我們在用?pandas?處理數(shù)據(jù)的時候,經(jīng)常會遇到用其中一列數(shù)據(jù)替換另一列數(shù)據(jù)的場景。這一類的需求估計很多人都遇到,當然還有其它更復雜的。解決這類需求的辦法有很多,這里我們來推薦幾個
    2022-09-09
  • Python Deque 模塊使用詳解

    Python Deque 模塊使用詳解

    Deque模塊是Python標準庫collections中的一項. 它提供了兩端都可以操作的序列, 這意味著, 你可以在序列前后都執(zhí)行添加或刪除.
    2014-07-07

最新評論

攀枝花市| 江都市| 荥经县| 黔东| 汉源县| 武川县| 天台县| 汉源县| 磴口县| 柘城县| 禄丰县| 金秀| 奉新县| 鲁甸县| 双城市| 北辰区| 吉木萨尔县| 邯郸县| 阿图什市| 沈阳市| 阿克| 康乐县| 类乌齐县| 屏南县| 墨江| 五指山市| 庆云县| 巴里| 苗栗市| 曲水县| 云梦县| 同德县| 高青县| 文水县| 固始县| 柯坪县| 桃江县| 榆林市| 潜山县| 威信县| 康乐县|