• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    Python中使用MELIAE分析程序內存占用實例

    來源:懂視網 責編:小采 時間:2020-11-27 14:31:46
    文檔

    Python中使用MELIAE分析程序內存占用實例

    Python中使用MELIAE分析程序內存占用實例:寫的dht協議搜索的程序,這幾天優化了一下發現速度確實快了好多。但是出現了一個新的問題,內存直接飆升,我開了十個爬蟲占用內存800m。開始我以為是節點太多了,找了幾個小問題修改一下,發現沒用。后來就到網上查找python內存分析的工具,查了一點資料發現
    推薦度:
    導讀Python中使用MELIAE分析程序內存占用實例:寫的dht協議搜索的程序,這幾天優化了一下發現速度確實快了好多。但是出現了一個新的問題,內存直接飆升,我開了十個爬蟲占用內存800m。開始我以為是節點太多了,找了幾個小問題修改一下,發現沒用。后來就到網上查找python內存分析的工具,查了一點資料發現

    寫的dht協議搜索的程序,這幾天優化了一下發現速度確實快了好多。但是出現了一個新的問題,內存直接飆升,我開了十個爬蟲占用內存800m。開始我以為是節點太多了,找了幾個小問題修改一下,發現沒用。后來就到網上查找python內存分析的工具,查了一點資料發現python有個meliae庫操作非常方便,就使用分析了一下,發現不是節點太多的原因0 0,是保存發送的t_id,用來標示返回的消息是那個發出的一個字典過大了。

    從分析的結果非常容易的定位了某個對象的數量和大小,非常容易分析。我開始以為是因為好多發送查詢信息以后,對面沒返回造成這個字典里的元素沒有釋放造成的,我就用過期時間判斷了一下,進行過期刪除。發現是小了,但是不是非常顯著,好像少了幾十不到100M。后來又減少了查找一個隨機hash的時間,以前是1分鐘查一次,我改成了就第一次查!,發現沒減少0 0.不知道是啥的原因。應該就是查找hash,詢問節點,然后返回然后詢問里邊的節點,最后數量越來越多,但是我不明白的是,怎么會這么多運行一分鐘就有60萬條。也就是說當時內存沒釋放的對象就有這么多。達到這個內存占用后,基本就不再變化,有很小很慢的提升,因為還開的其他程序,不確定是不是這些程序其他對象的增加造成的。等分階段dump測試一下。

    安裝直接pip install meliae 就ok了,我看好久沒更新的項目了,不知道還有沒有好的替代品不過用著還不錯。

    將內存dump到文件
    代碼如下:


    from meliae import scanner
    scanner.dump_all_objects('/tmp/dump%s.txt' % time.time())


    分析文件:
    代碼如下:


    from meliae import loader
    #加載dump文件
    om = loader.load('/opt/log/dump.txt')
    #計算各Objects的引用關系
    om.compute_parents()
    #去掉各對象Instance的_dict_屬性
    om.collapse_instance_dicts()
    #分析內存占用情況
    om.summarize()


    字段意義如下:
    Index : 行索引號
    Count : 該類型的對象總數
    %(Count) : 該類型的對象總數 占 所有類型的對象總數 的百分比
    Size : 該類型的對象總字節數
    %(Size) : 該類型的對象總字節數 占 所有類型的對象總字節數 的百分比
    Cum : 累積行索引后的%(Size)
    Max : 該類型的對象中,最大者的字節數
    Kind : 類型

    分析某個對象,找出它的引用關系
    代碼如下:


    #得到所有的POP3ClientProtocol對象
    p = om.get_all('POP3ClientProtocol')
    #查看第一個對象
    p[0]
    #可以查看該對象的所有引用
    p[0].c
    #查看誰引用了這個對象
    p[0].p

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Python中使用MELIAE分析程序內存占用實例

    Python中使用MELIAE分析程序內存占用實例:寫的dht協議搜索的程序,這幾天優化了一下發現速度確實快了好多。但是出現了一個新的問題,內存直接飆升,我開了十個爬蟲占用內存800m。開始我以為是節點太多了,找了幾個小問題修改一下,發現沒用。后來就到網上查找python內存分析的工具,查了一點資料發現
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 99久久精品免费看国产一区二区三区 | 久久亚洲精品人成综合网| 亚洲国产综合精品中文第一区| 免费精品无码AV片在线观看| 欧美成人精品高清在线播放| 91精品国产成人网在线观看| 国产91大片精品一区在线观看| 久久青青草原精品国产| 中文字幕亚洲精品无码| 全国精品一区二区在线观看| 国产精品伦理久久久久久| 真实国产乱子伦精品免费| 国内精品51视频在线观看| 国产精品VA在线观看无码不卡| 日韩一区精品视频一区二区| 最新国产精品拍自在线观看| 亚洲精品高清在线| 日韩欧美亚洲国产精品字幕久久久 | 国产精品无码免费播放| 亚洲国产精品婷婷久久| 国产精品青草久久久久婷婷 | 99在线精品视频观看免费| 老司机性色福利精品视频| 亚洲国产精品久久电影欧美| 永久无码精品三区在线4| 亚洲精品国产va在线观看蜜芽| 国产精品亚洲一区二区三区在线| 99精品伊人久久久大香线蕉| 99精品一区二区三区无码吞精| 精品人妻大屁股白浆无码| 精品无码一区二区三区亚洲桃色 | 久久久久国产日韩精品网站| 国产精品亚洲不卡一区二区三区 | 欧美黑人巨大videos精品| 精品一区二区三区免费视频| 国产农村妇女毛片精品久久| 国产综合免费精品久久久| 久久精品国产72国产精福利| 欧美日韩国产精品 | 亚洲人成国产精品无码| 欧美精品色婷婷五月综合|