Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memprofil dan Memantau Penggunaan Memori dengan Berkesan dalam Python?

Bagaimanakah Saya Boleh Memprofil dan Memantau Penggunaan Memori dengan Berkesan dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-12-06 06:28:101056semak imbas

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

Bagaimanakah saya boleh menganalisis penggunaan memori dalam Python?

Memprofilkan Penggunaan Memori dalam Python

Python 3.4 memperkenalkan modul tracemalloc untuk analisis mendalam peruntukan memori. Untuk memaparkan statistik peruntukan memori untuk fungsi tertentu:

from tracemalloc import start, take_snapshot, display_top

start()

# Code to profile memory usage

snapshot = take_snapshot()
display_top(snapshot)

Memantau Memori Sepanjang Masa

Untuk menjejaki penggunaan memori dalam tempoh lanjutan:

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)

Menggunakan Benang Asing untuk Pemantauan

Untuk memantau penggunaan memori daripada utas berasingan semasa utas utama berjalan:

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()

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memprofil dan Memantau Penggunaan Memori dengan Berkesan dalam 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