欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python內(nèi)存監(jiān)控工具memory_profiler和guppy的用法詳解

系統(tǒng) 2442 0

python2.7在內(nèi)存管理上相比python3還是有些坑的,其釋放后的內(nèi)存仍然保留在python的內(nèi)存池中,不被系統(tǒng)所用。python循環(huán)引用的變量不會被回收,這會導(dǎo)致程序越運(yùn)行,占用的內(nèi)存越大。我在跑 py-faster-rcnn的demo 時,基本上跑2000張圖像,16g內(nèi)存就要爆了。于是嘗試用python的內(nèi)存監(jiān)控工具來調(diào)試程序,找到不能膨脹的變量,然后del之,再手動回收內(nèi)存gc.collec()

下面是我用的兩個內(nèi)存監(jiān)視工具,一個是按每行代碼查看內(nèi)存占用的工具memory_profiler,一個是查看占用內(nèi)存前十位變量的工具guppy。

1. memory_profiler

首先是安裝:

pip install -U memory_profiler

然后用profile修飾想要查看的函數(shù)名:如:

            
@profile
def my_func():
 a = [1] * (10 ** 6)
 b = [2] * (2 * 10 ** 7)
 del b
 return a

if __name__ == '__main__':
 my_func()
          

輸出結(jié)果:

Line #??? Mem usage? Increment?? Line Contents
==============================================
???? 3?????????????????????????? @profile
???? 4????? 5.97 MB??? 0.00 MB?? def my_func():
???? 5???? 13.61 MB??? 7.64 MB?????? a = [1] * (10 ** 6)
???? 6??? 166.20 MB? 152.59 MB?????? b = [2] * (2 * 10 ** 7)
???? 7???? 13.61 MB -152.59 MB?????? del b
???? 8???? 13.61 MB??? 0.00 MB?????? return a

memory_profiler功能強(qiáng)大,更多功能可以看官網(wǎng)這里

2. guppy

首先安裝:

pip install guppy

然后import下

            
from guppy import hpy
hxx = hpy()
heap = hxx.heap()
byrcs = hxx.heap().byrcs;
          

在主程序下增加:

print(heap)

輸出示例:

            
Index Count %  Size % Cumulative % Kind (class / dict of class)
  0 10124 22 81944416 95 81944416 95 list
  1 16056 34 1325464 2 83269880 96 str
  2 9147 20 745616 1 84015496 97 tuple
  3 102 0 366480 0 84381976 98 dict of module
  4 287 1 313448 0 84695424 98 dict of type
  5 2426 5 310528 0 85005952 98 types.CodeType
  6 2364 5 283680 0 85289632 99 function
  7 287 1 256960 0 85546592 99 type
  8 169 0 192088 0 85738680 99 dict (no owner)
  9 123 0 142728 0 85881408 99 dict of class
          

可以看到第一個list占了95%的內(nèi)存,若 print(heap) 在主程序的循環(huán)中,可以查看每次循環(huán)后的變量內(nèi)存占用情況。

輸入以下命令,查看這個占內(nèi)存最大的list中的數(shù)據(jù)類型:
byrcs[0].byid

最后測試后發(fā)現(xiàn), test.py get_im_blob 等函數(shù)占用內(nèi)存不斷增大,每檢測一副圖像,該函數(shù)增加6-10MB內(nèi)存開銷。但奇怪的是用guppy查看前十個變量,并沒有發(fā)現(xiàn)哪個變量有明顯的內(nèi)存增大跡象。于是猜測可能是每張圖像推理后,推理的結(jié)果bbox,label,img等數(shù)據(jù)保存在了內(nèi)存中,這樣方便所有圖像推理結(jié)束后, plt.show(). 于是修改程序,每張圖像推理后, plt.show() 一下。用 memory_profiler 發(fā)現(xiàn)內(nèi)存不再繼續(xù)增大,interesting!其實(shí)把 plt.show() 改成 plt.close()也 可以防止內(nèi)存不斷增大。具體原因肯定是python 的內(nèi)存回收機(jī)制規(guī)則導(dǎo)致的。

總結(jié)

以上所述是小編給大家介紹的python內(nèi)存監(jiān)控工具memory_profiler和guppy的用法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人片黄网站A片免费 | 亚洲韩精品欧美一区二区三区 | 热久久免费视频 | 国产一区二区三区免费观看 | 亚洲视频区 | 欧美第四页 | 国产一级大片 | 激情五月综合婷婷 | 九九51精品国产免费看 | 国产成人一区二区三区 | 日本熟妇毛茸茸xxxxx | 美女一区| 色综合天天天天做夜夜夜夜做 | 色欧美片视频在线观看 | 亚洲国产片高清在线观看 | 国产99久久精品一区二区永久免费 | 伊人色综合网 | 欧美精品在线免费观看 | 亚洲日韩欧洲无码av夜夜摸 | 91久久青青草原免费 | 亚洲伊人久久综合 | 美女下面被cao出水 玖玖玖影院 | 最新日本中文字幕在线观看 | 天天爱夜夜 | 婷婷视频网 | aaaaaaa片毛片免费观看 | 九九热视频在线观看 | 欧美亚洲韩国国产综合五月天 | 波多野结衣一区二区三区88 | 成人一区二区在线观看视频 | 老子午夜影院 | 99久热 | 国产一区在线播放 | 日韩午夜伦y4480私人影院 | 91在线视频免费观看 | 日本一二区视频 | 免费高清seyeye在线视频观看 | 精品成人佐山爱一区二区 | 欧美ab在线 | 国产精品夜夜爽 | 欧美精品一区三区 |