真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么調(diào)試Python程序的內(nèi)存泄露問題

這篇文章主要講解了“怎么調(diào)試Python程序的內(nèi)存泄露問題”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么調(diào)試Python程序的內(nèi)存泄露問題”吧!

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),定南企業(yè)網(wǎng)站建設(shè),定南品牌網(wǎng)站建設(shè),網(wǎng)站定制,定南網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,定南網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

如果大家在 Linux 或者 macOS 下面運(yùn)行一段可能導(dǎo)致內(nèi)存泄露的程序,那么你可能會看到下面這樣的情況:

怎么調(diào)試Python程序的內(nèi)存泄露問題

而如果你用的系統(tǒng)是 Windows,那么可能電腦直接就卡死了。

但是,調(diào)試這種 OOM(Out of  Memory)的問題有時候是非常困難的,因為你不知道代碼哪個地方會導(dǎo)致內(nèi)存泄露。但是如果你運(yùn)行程序進(jìn)行調(diào)試,程序又會中途被殺掉或者直接卡死系統(tǒng)。

如果我們有辦法看到程序里面每一個函數(shù)占用的內(nèi)存大小,那么我們就能縮小檢查的范圍。

為了實現(xiàn)這個目的,我們可以安裝并使用一個叫做filprofiler的第三方庫,它可以分析 Python 程序的內(nèi)存占用情況。

我們先安裝這個庫:

pip install filprofiler

然后寫一段會導(dǎo)致內(nèi)存泄露的代碼:

def func_a():     print('我是一個正常的函數(shù)')  def func_b():     print('我是第二個正常的函數(shù)')  def func_b():     print('我是第三個正常的函數(shù)')  def func_oom():     print('我是一個會導(dǎo)致內(nèi)存泄露的函數(shù)')     datas = []     while True:         datas.append('s' * 1024 * 1024)     print('運(yùn)行程序的時候,你不會看到這一行')   def run():     func_a()     func_b()     func_oom()   run()

這段程序直接運(yùn)行會因為內(nèi)存泄露的問題被系統(tǒng)直接殺死。

在使用filprofiler之前,還需要調(diào)整一下虛擬內(nèi)存的大小。否則,filprofiler本身也會因為占用內(nèi)存過大的問題而被系統(tǒng)殺掉。

先使用free命令看一下系統(tǒng)可用的內(nèi)存有多少:

怎么調(diào)試Python程序的內(nèi)存泄露問題

系統(tǒng)可用內(nèi)存為1619456 KB

我們使用ulimit命令,把程序能夠使用的內(nèi)存稍稍調(diào)低一些,這樣即使被占滿,也不會被系統(tǒng)殺死:

ulimit -Sv 1600000

然后,使用 filprofiler 來運(yùn)行這個程序:

fil-profile run test.py

運(yùn)行效果如下圖所示:

怎么調(diào)試Python程序的內(nèi)存泄露問題

filprofiler  會在當(dāng)前文件夾下面生成一個fil-result文件夾,在里面會有一個以時間命名的文件夾,文件夾中會有兩個svg文件,如下圖所示:

怎么調(diào)試Python程序的內(nèi)存泄露問題

我們使用瀏覽器打開其中的out-of-memory.svg文件,可以看到如下圖所示的內(nèi)存占用圖:

怎么調(diào)試Python程序的內(nèi)存泄露問題

從圖中可以看到,占用內(nèi)存最大的函數(shù)是func_oom,程序也是在這個地方崩潰的。

感謝各位的閱讀,以上就是“怎么調(diào)試Python程序的內(nèi)存泄露問題”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么調(diào)試Python程序的內(nèi)存泄露問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!


新聞標(biāo)題:怎么調(diào)試Python程序的內(nèi)存泄露問題
URL鏈接:http://weahome.cn/article/igpcis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部