Python计时器

概述

计时器,用于计算程序运行时间

Python3计时器

jupyter版

%%timeit -n 9  # 计时9次

函数版

from time import time

def f():
    pass

def main():
    t = time()
    f()
    print('时间消耗:%.2f秒' % (time() - t))

if __name__ == '__main__':
    main()

普通装饰器+函数版

def fn_timer(fn):
    def function_timer(*args, **kwargs):
        """装饰器"""
        from time import time
        t = time()
        result = fn(*args, **kwargs)
        print('【%s】运行%.2f秒' % (fn.__name__, time() - t))
        return result
    return function_timer

@fn_timer
def f():
    pass

help(f)

wraps装饰器+函数版

from time import time
from functools import wraps

def fn_timer(fn):
    @wraps(fn)
    def function_timer(*args, **kwargs):
        t = time()
        result = fn(*args, **kwargs)
        print('【%s】运行时间:%.2f秒' % (fn.__name__, time() - t))
        return result
    return function_timer

@fn_timer
def f():
    """用wraps后可以获取help"""
    pass

print(f.__doc__)

封装在类中(力荐)

from time import time
class Timer:
    def __init__(self):
        self.t = time()
    def __del__(self):
        print(time() - self.t)
        print('%.2f分钟' % ((time() - self.t) / 60))

封装在类中+单例对象(力荐)

from time import time, strftime


class Timer:
    def __init__(self):
        self.t = time()
        print('开始时间:' + self.now)

    def __del__(self):
        print('结束时间:' + self.now)
        if self.__str__():
            print('运行时间:' + str(self))

    def __str__(self):
        t = self.second
        if t < .5:
            return ''
        elif t < 60:
            return '%.2fs' % t
        elif t < 3600:
            return '%.2fmin' % (t / 60)
        else:
            return '%.2fh' % (t / 3600)

    @property
    def second(self) -> float:
        """程序运行秒数"""
        return time() - self.t

    @property
    def now(self) -> str:
        return strftime('%Y-%m-%d %H:%M:%S')

    def __new__(cls):
        if not hasattr(Timer, '_instance'):
            Timer._instance = object.__new__(cls)
        return Timer._instance

Java计时方法

long start = System.currentTimeMillis();
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值