Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memprofilkan Penggunaan Memori dalam Kod Python?

Bagaimanakah Saya Boleh Memprofilkan Penggunaan Memori dalam Kod Python?

DDD
DDDasal
2024-12-01 08:52:11742semak imbas

How Can I Profile Memory Usage in Python Code?

Cara Memprofilkan Penggunaan Memori dalam Python

Apabila meneroka algoritma dengan melaksanakan versi naif dan mengoptimumkannya, menganalisis penggunaan memori boleh menjadi penting. Python 3.4 memperkenalkan modul tracemalloc, menawarkan cerapan terperinci tentang segmen kod yang memperuntukkan paling banyak memori.

Menggunakan 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")

Contoh

Memprofilkan penggunaan memori semasa mengira awalan dalam a senarai perkataan daripada kamus Inggeris Amerika:

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)

Output

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

Kod Pengendalian Yang Melepaskan Memori

Jika fungsi memperuntukkan banyak memori dan kemudian mengeluarkan semuanya, secara teknikal ia bukan kebocoran tetapi masih menggunakan secara berlebihan ingatan. Untuk mengambil kira perkara ini, anda perlu mengambil syot kilat semasa fungsi sedang berjalan atau menggunakan benang berasingan untuk memantau penggunaan memori.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memprofilkan Penggunaan Memori dalam Kod Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn