Python实现一个计时器(Timer)
time类是python的内置类,只需要直接import即可:
from time import time
我们用time类获取一下当前的时间戳:
from time import time
# timestampe
ts = time()
print(ts)
# 1695864961.9690828
ts的整数部分单位是秒,小数部分是毫秒微秒。
这个时间戳被称为unix timestamp,表示的是自从1970年1月1日0时0分0秒到现在流逝的时间,
since January 1st, 1970 at 00:00:00 ETC。
先看一个很简单的实现:
def foo():
x = 0
for i in range(100000):
x += i
return x
from time import time
start_time = time()
foo()
end_time = time()
print("time elapsed: {} secondes".format(start_time))
# time elapsed: 1695865191.565248 secondes
这个实现很简单:
这种实现很直观,但是如果很多函数需要用计时器来测试或者记录,就需要重复很多这样的代码,整个代码结构就会变得支离破碎。
接下来,我们用装饰器,实现一个封装,起到方便复用的作用。
装饰器的原理可以参加另一篇文章《Python装饰器(Python Decorator)介绍》
from time import time
def time(func):
def wrapper(*args, **kwargs):
start_time = time()
func(*args, **kwargs)
end_time = time()
print(f'time taken for {func.__name__}:', end_time-start_time, 'seconds')
return wrapper
@timethis
def test1():
for i in range(100000):
x = 1
@timethis
def test2():
for i in range(1000000):
x = 1
@timethis
def test3():
for i in range(1000000):
x = 1
test1()
test2()
test3()
# time taken for test1: 0.011172771453857422 seconds
# time taken for test2: 0.041152000427246094 seconds
# time taken for test3: 0.029973983764648438 seconds
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。