Python usa el decorador para calcular el tiempo de ejecución del programa pequeña demostración

Recientemente, al ejecutar un programa, es necesario contar el tiempo de ejecución del programa varias veces y optimizarlo. Es relativamente simple pensar en ello, pero cada vez que hay una ola de estadísticas de tiempo, no hay necesidad de escribirlas una y otra vez. Naturalmente, pienso en usar un decorador muy Pythonic. De una vez por todas, solo ve al código debajo.

import time


def timer(func):
    def call_func(*args, **kwargs):
        print("计时开始")
        start_time = time.time()
        func(*args, **kwargs)
        end_time = time.time()
        total_time = end_time - start_time
        print("计时结束")
        print(f"程序用时{int(total_time // 60)}分{total_time % 60:.2f}秒")
    return call_func


if __name__ == '__main__':
    @timer
    def test(second):  # 测试函数
        time.sleep(second)

    test(3.4)

El siguiente es el resultado de la ejecución.
resultado de la operación
Primero implementamos un decorador general e implementamos estadísticas de tiempo con el módulo de tiempo incorporado antes y después de la función func, y usamos la nueva función f string introducida por python 3.6 ( súper recomendado, rápido, intuitivo y simple ) Imprime el resultado.
Cuando necesitemos contar el tiempo de ejecución de un determinado programa o bloque de código (como la función de prueba anterior), agregue el decorador @timer que acabamos de escribir a la función de prueba.
Por supuesto, necesitamos reutilizar este módulo. En este momento, solo necesitamos copiar este mytimer.py (el nombre del bloque de código anterior, puede elegir cualquier otra cosa a voluntad) en nuestro proyecto, importar el módulo y usarlo donde necesita usar el tiempo El decorador es suficiente, el siguiente es un ejemplo de implementación:

# 导入计时器装饰器
from mytimer import timer


@timer # 给函数加装饰器
def spark_demo(usetime):
    """
    假设我们要统计运行spark中spark_demo的总时长
    """
    import time
    time.sleep(usetime)
    pass


if __name__ == '__main__':
    spark_demo(74.4)

Resultado de la operación:
Inserte la descripción de la imagen aquí
siempre que necesite agregar un @timer donde necesite usar el temporizador, ¡es simple y cómodo! ¡Es por eso que Pythoner tiene tanto volumen de cabello! ! !

Supongo que te gusta

Origin blog.csdn.net/weixin_41897122/article/details/101555480
Recomendado
Clasificación