Python中使用LOGGING模块实现程序性能监控
发布时间:2024-01-15 00:52:21
LOGGING模块是Python提供的一个强大的日志记录工具,可以帮助我们监控程序的运行状态和性能。下面是一个使用LOGGING模块实现程序性能监控的示例:
import logging
import time
# 配置日志记录
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filename='performance.log',
filemode='w')
# 创建一个logger对象
logger = logging.getLogger('performance')
# 创建一个性能计时装饰器
def performance_monitor(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
execution_time = end_time - start_time
logger.info(f'Function {func.__name__} execution time: {execution_time} seconds')
return result
return wrapper
# 使用性能计时装饰器装饰需要监控性能的函数
@performance_monitor
def calculate_factorial(n):
result = 1
for i in range(1, n+1):
result *= i
return result
if __name__ == '__main__':
# 在主程序中调用需要监控性能的函数
factorial = calculate_factorial(10000)
print(factorial)
在上面的例子中,我们首先通过logging.basicConfig()方法配置了日志记录的格式,级别,文件名等参数。然后我们创建了一个名为performance的logger对象,用于记录性能相关的日志。
接下来我们定义了一个装饰器performance_monitor,用于计时装饰需要监控性能的函数。在装饰器内部,我们使用time.time()方法获取函数开始和结束的时间戳,然后计算出函数的执行时间。最后,我们使用logger.info()方法将计算得到的执行时间记录到日志文件中。
在主程序中,我们调用了calculate_factorial()函数来计算10000的阶乘,并打印结果。由于calculate_factorial()函数被@performance_monitor装饰器装饰,因此在函数执行的过程中会自动记录函数的执行时间。
我们可以运行上述代码,并观察日志文件performance.log中记录的日志信息。通过这种方式,我们可以方便地监控程序的性能,以便进行性能优化和调试。
