欢迎访问宙启技术站
智能推送

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中记录的日志信息。通过这种方式,我们可以方便地监控程序的性能,以便进行性能优化和调试。