>백엔드 개발 >파이썬 튜토리얼 >Python에서 메모리 사용량을 효과적으로 프로파일링하고 모니터링하려면 어떻게 해야 합니까?

Python에서 메모리 사용량을 효과적으로 프로파일링하고 모니터링하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-06 06:28:10991검색

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으로 문의하세요.