想要计算 Python 程序的具体执行时间,有如下几种方法:
datetime.datetime.now()
def method1():
start_time = datetime.datetime.now()
foo() # 执行过程
run_time = (datetime.datetime.now() - start_time).microseconds # 微秒
print("执行时间:", run_time / 1000000) # 转换为秒:1微秒等于1百万分之一秒。
time.time()
def method2():
start_time = time.time()
foo() # 执行过程
run_time = (time.time() - start_time) # 单位:秒
print("执行时间:", run_time)
time.clock()
在 Python3.3之前,也会经常用到该方法。但是该方法,在Python3.3以后,不推荐使用。
time.clock(),用以浮点数计算的秒数返回当前的CPU时间,用来衡量不同程序的耗时,比time.time()
更有用
python3.3以后不被推荐使用,该方法依赖操作系统,建议使用 per_counter
(返回系统运行时间)或process_time
(返回进程运行时间)代替。
需要注意:由于该方法返回的是 cpu 时间,所以在使用Python 多进程时,也无法对整体运行时间进行统计。
time.perf_counter()
def method3():
start_time = time.perf_counter()
foo() # 执行过程
run_time = (time.perf_counter() - start_time) # 单位:秒
print("执行时间:", run_time)
返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。
由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的。
time.process_time()
def method4():
start_time = time.process_time()
foo()
run_time = (time.process_time() - start_time) # 单位:秒
print("执行时间:", run_time)
返回当前进程执行CPU的时间总和,不包含睡眠时间。
由于返回值的基准点是未定义的,所以只有连续调用的结果之间的差才是有效的。
需要注意的是:该方法返回的是 cpu 时间总和,会忽略程序中time.sleep(n)
的时间。另外,在使用 Python 多进程时,也需要注意,该方法无法统计出整体程序运行时间。
学习这件事不在乎有没有人教你,最重要的是在于你自己有没有觉悟和恒心。 —— 法布尔