簡體   English   中英

Python和內存消耗

[英]Python and Memory Consumption

我正在尋找一種方法,可以使用高內存程序來處理RAM和CPU的過載...我想處理文件中包含的大量數據。 然后,我讀取文件並處理其中的數據。 問題在於有許多嵌套的for循環,並且正在從所有處理過的數據中創建根XML文件。 在半小時左右的運行時間后,該程序很容易消耗了幾GB的RAM。 有什么我可以做的事情,不要讓RAM變大和/或解決它。

您是否真的需要一次將XML文件中的全部數據保留在內存中?

那里的大多數(全部?)XML庫都允許您進行迭代解析 ,這意味着您僅將XML文件的幾個節點而 不是整個文件 保留在內存中 除非您自己創建一個包含XML文件的字符串而沒有任何庫,但這有點瘋狂。 在這種情況下,請盡快使用庫。

此處顯示的特定代碼示例可能不適用於您的項目,但是當面對以GB或更大字節計量的XML數據時,請考慮一些原則(由測試和lxml文檔證明):

  • 使用迭代分析策略來增量處理大型文檔。
  • 如果需要以隨機順序搜索整個文檔,請移至建立索引的XML數據庫。
  • 對您選擇的數據要非常保守。 如果僅對特定節點感興趣,請使用通過這些名稱選擇的方法。 如果需要謂詞語法,請嘗試使用XPath類和方法之一。
  • 考慮手頭的任務和開發人員的舒適程度。 當不考慮速度時,Python開發人員可能更喜歡lxml的objectify或Amara之類的對象模型。 僅需要解析時, cElementTree更快。
  • 花時間進行甚至簡單的基准測試。 處理數百萬條記錄時,會產生很小的差異,而且哪種方法最有效並不總是很明顯。

如果您需要對數據進行復雜的操作,為什么不將其放在關系數據庫上並從那里對數據進行操作呢? 那將有更好的表現。

暫無
暫無

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

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