在Debian系统上监控Python资源,可以使用多种工具和方法。以下是一些常用的方法和工具:
使用 psutil
监控CPU和内存使用情况:
psutil
是一个跨平台的库,可以用于获取系统CPU、内存、磁盘、网络等资源的使用情况。psutil
:pip install psutil
import psutil
cpu_usage = psutil.cpu_percent(interval=1)
memory_info = psutil.virtual_memory()
print(f"CPU 使用率: {cpu_usage}%")
print(f"可用内存: {memory_info.available / (1024**3):.2f} GB")
使用 cProfile
进行代码性能分析:
cProfile
是一个内置的性能分析工具,可以分析函数的执行时间,找出性能瓶颈。import cProfile
def slow_function():
result = sum([i**2 for i in range(1000000)])
return result
cProfile.run("slow_function()")
使用 line_profiler
进行逐行分析:
line_profiler
可以逐行分析代码的运行时间,帮助优化关键代码段。from line_profiler import LineProfiler
def slow_function():
result = sum([i**2 for i in range(1000000)])
return result
profiler = LineProfiler()
profiler.add_function(slow_function)
profiler.enable_by_count()
slow_function()
profiler.print_stats()
使用 tracemalloc
监控内存泄漏:
tracemalloc
可以监控内存分配情况,帮助发现内存泄漏问题。import tracemalloc
tracemalloc.start()
def memory_leak():
data = [i for i in range(1000000)]
return data
memory_leak()
print(tracemalloc.get_traced_memory())
tracemalloc.stop()
日志记录:
logging
模块记录应用程序的运行日志,有助于追踪应用行为和性能瓶颈。import logging
import time
from functools import wraps
logger = logging.getLogger('order_processing')
logger.setLevel(logging.DEBUG)
def log_time(func):
@wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
elapsed_time = time.time() - start_time
logger.info(f'{func.__name__} executed in {elapsed_time:.2f} seconds')
return result
return wrapper
@log_time
def heavy_computation(data):
# 进行复杂的计算
pass
通过这些工具和方法,可以全面监控和优化Debian系统上Python资源的利用情况。