首頁 >後端開發 >Python教學 >如何有效分析和監控 Python 中的記憶體使用情況?

如何有效分析和監控 Python 中的記憶體使用情況?

Barbara Streisand
Barbara Streisand原創
2024-12-06 06:28:101001瀏覽

How Can I Effectively Profile and Monitor Memory Usage in Python?

如何分析 Python 中的記憶體使用情況?

分析 Python 中的記憶體使用量

Python 3.4引入了tracemalloc模組來深入分析記憶體分配。要顯示特定函數的記憶體分配統計資料:

from tracemalloc import start, take_snapshot, display_top

start()

# Code to profile memory usage

snapshot = take_snapshot()
display_top(snapshot)

隨時間監控記憶體

要追蹤一段時間內的記憶體使用情況:

from collections import Counter
import time

def count_prefixes():
    counts = Counter()
    with open('/usr/share/dict/american-english') as words:
        words = list(words)
        for word in words:
            counts[word[:3]] += 1
            time.sleep(0.0001)
    return counts.most_common(3)

count_prefixes()
snapshot = take_snapshot()
display_top(snapshot)

使用單獨的執行緒監控

在主執行緒執行緒的記憶體使用情況:

from queue import Queue
from threading import Thread

def memory_monitor(queue):
    while True:
        try:
            command = queue.get(timeout=0.1)
            if command == 'stop':
                return
            snapshot = take_snapshot()
            print(datetime.now(), 'max RSS', getrusage(RUSAGE_SELF).ru_maxrss)
        except Empty:
            continue

queue = Queue()
monitor_thread = Thread(target=memory_monitor, args=(queue,))
monitor_thread.start()

try:
    count_prefixes()
finally:
    queue.put('stop')
    monitor_thread.join()

以上是如何有效分析和監控 Python 中的記憶體使用情況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn