91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 程序的內存泄露該怎么解決

發布時間:2021-10-11 18:33:35 來源:億速云 閱讀:262 作者:柒染 欄目:大數據

本篇文章為大家展示了Python 程序的內存泄露該怎么解決,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

如果大家在 Linux 或者 macOS 下面運行一段可能導致內存泄露的程序,那么你可能會看到下面這樣的情況:

Python 程序的內存泄露該怎么解決  

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

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

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

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

我們先安裝這個庫:

pip install filprofiler
 

然后寫一段會導致內存泄露的代碼:

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

def run():    func_a()    func_b()    func_oom()

run()
 

這段程序直接運行會因為內存泄露的問題被系統直接殺死。

在使用 filprofiler 之前,還需要調整一下虛擬內存的大小;否則,filprofiler 本身也會因為占用內存過大的問題而被系統殺掉。

先使用free命令看一下系統可用的內存有多少:

Python 程序的內存泄露該怎么解決  
系統可用內存為1619456 KB

我們使用ulimit命令,把程序能夠使用的內存稍稍調低一些,這樣即使被占滿,也不會被系統殺死:

ulimit -Sv 1600000
 

然后,使用 filprofiler 來運行這個程序:

fil-profile run test.py
 

運行效果如下圖所示:

Python 程序的內存泄露該怎么解決  

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

Python 程序的內存泄露該怎么解決  

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

Python 程序的內存泄露該怎么解決  

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

上述內容就是Python 程序的內存泄露該怎么解決,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邮箱| 克山县| 金寨县| 海口市| 上思县| 济阳县| 连城县| 荔浦县| 潞城市| 敦煌市| 上饶县| 资兴市| 贺兰县| 霸州市| 云龙县| 北辰区| 瑞安市| 南岸区| 仁怀市| 大方县| 九龙坡区| 都兰县| 遂宁市| 汕头市| 杨浦区| 东港市| 育儿| 深水埗区| 武隆县| 建昌县| 乡城县| 日土县| 闸北区| 玉溪市| 永泰县| 车致| 桦南县| 壶关县| 微山县| 泸西县| 永和县|