簡體   English   中英

避免遞歸python函數中的“內存不足”錯誤

[英]Avoiding “run out of memory” error in a recursive python function

我寫了一個遞歸的python函數。 30分鍾-1小時后,由於內存不足,它取消了該過程。 如果我查看任務管理器,我還會看到使用了過多的內存。 如果我重新啟動該功能,一切都會恢復正常。 如何避免此問題並使程序“永遠運行”?

根據經驗,不應在長時間運行的程序中使用遞歸調用。 當然,也有例外...

遞歸功能通常用於應用程序指示管理某些需要該功能的地方:例如。 遍歷樹結構,或在數據庫中查找某些內容,直到達到一定的詳細程度。

長時間運行的程序很少屬於此類...即使使用機器人抓取頁面也始終有一個參考點(當完成一個站點的“抓取”時),必須從頭開始遞歸。 有時很難診斷出該問題(我在我的網站日志中發現,一個較知名的機器人在不良鏈接上陷入了無限循環。要當心無限循環!)。

擴大Python的堆棧很少是解決方案...向代碼中添加行以檢查遞歸深度是否在應用程序中的已知間隔處返回0。 或添加深度計數器...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM