ホームページ >バックエンド開発 >Python チュートリアル >Python でメモリ使用量を効果的にプロファイルおよび監視するにはどうすればよいですか?

Python でメモリ使用量を効果的にプロファイルおよび監視するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 06:28:10993ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。