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

Python コードでメモリ使用量をプロファイリングするにはどうすればよいですか?

DDD
リリース: 2024-12-01 08:52:11
オリジナル
744 人が閲覧しました

How Can I Profile Memory Usage in Python Code?

Python でメモリ使用量をプロファイリングする方法

単純なバージョンを実装して最適化することでアルゴリズムを調査する場合、メモリ使用量の分析が重要になることがあります。 Python 3.4 では、tracemalloc モジュールが導入され、どのコード セグメントが最も多くのメモリを割り当てるかについての詳細な洞察が提供されます。

tracemalloc の使用

import tracemalloc

tracemalloc.start()

# Code to profile...

snapshot = tracemalloc.take_snapshot()

# Display top memory-consuming lines
top_stats = snapshot.statistics('lineno')
for index, stat in enumerate(top_stats[:3], 1):
    frame = stat.traceback[0]
    print(f"#{index}: {frame.filename}:{frame.lineno}: {stat.size / 1024:.1f} KiB")
ログイン後にコピー

単語のリスト内の接頭辞をカウントしながらメモリ使用量をプロファイリングします。アメリカ英語辞書:

import tracemalloc
import linecache
import os

tracemalloc.start()

words = list(open('/usr/share/dict/american-english'))

counts = Counter()
for word in words:
    prefix = word[:3]
    counts[prefix] += 1

snapshot = tracemalloc.take_snapshot()
display_top(snapshot)
ログイン後にコピー

出力

Top 3 lines
#1: scratches/memory_test.py:37: 6527.1 KiB
    words = list(words)
#2: scratches/memory_test.py:39: 247.7 KiB
    prefix = word[:3]
#3: scratches/memory_test.py:40: 193.0 KiB
    counts[prefix] += 1
4 other: 4.3 KiB
Total allocated size: 6972.1 KiB
ログイン後にコピー

メモリを解放するコードの処理

関数の場合大量のメモリを割り当ててからすべてを解放します。技術的にはリークではありませんが、それでも過剰なメモリを消費します。これを考慮するには、関数の実行中にスナップショットを取得するか、別のスレッドを使用してメモリ使用量を監視する必要があります。

以上がPython コードでメモリ使用量をプロファイリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート