當前位置:首頁 » 編程語言 » python讀取內存

python讀取內存

發布時間: 2025-07-17 08:50:25

① 性能測試,python 內存分析工具 -memray

Memray是彭博社開發的一款開源內存剖析工具,上線一個多月即獲得8.4k星,因其在Python內存分析領域的出色表現,被譽為明星項目。Memray能夠跟蹤Python代碼、本地擴展模塊及Python解釋器的內存分配情況,並生成多種報告,幫助開發者深入分析Python代碼的內存使用狀況。


Memray的安裝和使用相對簡單,只需運行命令:python3 -m memray --help以獲取詳細幫助信息。


在使用Memray時,可以通過以下命令執行分析:memray-py文件名.進程id.bin,進而將分析結果轉換為HTML格式的火焰圖報告,直觀展示程序調用過程中的內存分配情況,寬度表示函數佔用內存的多少。


值得注意的是,使用火焰圖報告時,與不加參數的分析結果看似相似,實際上大相徑庭。火焰圖深入追蹤內存分配,有助於在Python內存溢出時快速定位問題,但同時會增加數據收集速度和文件大小。


Memray提供多種報告形式,包括:



  • 默認排序:根據Total memory從大到小排列。

  • 按私有內存排序:使用"O"參數,按內存對象的私有內存大小從大到小排序。

  • 按內存分配次數排序:使用"A"參數,按內存分配次數從高到底排序。


藉助這些統計信息,開發者可以迅速定位佔用內存大的對象和頻繁分配內存的對象,從而重點分析和優化這些關鍵部分。


Memray還支持多種報告生成命令,包括:



  • 火焰圖報告:使用flamegraph命令生成。

  • 表格報告:使用table命令生成。

  • 樹形報告:使用tree命令生成。

  • 概要報告:使用summary命令生成。

  • 詳細統計報告:使用stats命令生成。


通過靈活使用這些報告類型,開發者可以全面了解Python程序的內存使用情況,有效提升代碼性能和穩定性。

② python 一個文件太大+內存裝不下+怎麼讀取 mongo

Python 環境下文件的讀取問題,請參見拙文Python 基礎 —— 文件

這是一道著名的 Python 面試題,考察的問題是,Python 讀取大文件和一般規模的文件時的區別,也即哪些介面不適合讀取大文件。

1. read() 介面的問題

f = open(filename, 'rb')
f.read()12

我們來讀取 1 個 nginx 的日至文件,規模為 3Gb 大小。read() 方法執行的操作,是一次性全部讀入內存,顯然會造成:

MemoryError...12

也即會發生內存溢出。

2. 解決方案:轉換介面

  • (1)readlines() :讀取全部的行,構成一個 list,實踐表明還是會造成內存的問題;

    for line in f.reanlines(): ...
  • 1

  • 2

  • (2)readline():每次讀取一行,

    while True:
    line = f.readline() if not line: break
  • 1

  • 2

  • 3

  • 4

  • (3)read(1024):重載,指定每次讀取的長度

    while True: block = f.read(1024) if not block: break
  • 1

  • 2

  • 3

  • 4

  • 3. 真正 Pythonic 的方法

    真正 Pythonci 的方法,使用 with 結構:

  • with open(filename, 'rb') as f: for line in f:

  • <do something with the line>123

  • 對可迭代對象 f,進行迭代遍歷:for line in f,會自動地使用緩沖IO(buffered IO)以及內存管理,而不必擔心任何大文件的問題。

    There should be one – and preferably only one – obvious way to do it.

熱點內容
python每隔 發布:2025-07-17 15:03:08 瀏覽:275
ftp命令passive 發布:2025-07-17 15:02:51 瀏覽:676
迅雷下載的緩存設置 發布:2025-07-17 14:59:54 瀏覽:958
網盤油猴腳本 發布:2025-07-17 14:55:32 瀏覽:723
解壓游戲解壓館可用 發布:2025-07-17 14:48:38 瀏覽:753
手機mq文件夾是什麼 發布:2025-07-17 14:47:42 瀏覽:182
python圖片像素 發布:2025-07-17 14:38:06 瀏覽:781
安卓7bin文件怎麼打開 發布:2025-07-17 14:36:39 瀏覽:439
手機密碼忘記了如何快速開鎖 發布:2025-07-17 14:35:51 瀏覽:71
打開個人存儲 發布:2025-07-17 14:31:30 瀏覽:511