一、使用 time
粗粒度的计算时间
1 2 3 4 5 6
| from time import time
begin = time() job = [x**2 for x in range(1, 100000, 3)] end = time() print('used {:.5} s'.format(end-begin))
|
细粒度的计算时间
我们将 使用 with 关键字配合一个 Timer 上下文管理器来包装想计算的代码。当代码块开始执行,它将启动计时器;当代码块结束的时候,它将停止计时器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import time
class Timer(object): def __init__(self, verbose=False): self.verbose = verbose def __enter__(self): self.start = time.time() return self def __exit__(self, *args): self.end = time.time() self.secs = self.end - self.start self.msecs = self.secs * 1000 if self.verbose: print('=> elapsed time: %f ms' % self.msecs)
with Timer() as t: job = [x**2 for x in range(1, 1000000, 3)] print("=> elapsed time: %s s" % t.secs)
|
二、 使用 profiler
平均耗时计算
有时候我们需要测算代码多次运行的平均时间。
1 2 3 4 5 6 7 8 9 10
| from timeit import timeit
def add(): return sum(range(111))
t = timeit('add()', setup="from __main__ import add", number=100000) print(t)
|