计算 Python 程序的运行时间的方法

Solid · 2018年11月26日 · 780 次阅读

想要计算 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 多进程时,也需要注意,该方法无法统计出整体程序运行时间。

共收到0条回复
暂无任何评论
我要评论
登录之后,才能够回复。如果您还没有帐号,请先注册
小甜饼

我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习。 —— 列宁