首页 > 解决方案 > python time.clock() 返回什么?

问题描述

考虑以下在 for 循环中执行大量磁盘写入的 Python 程序:

from time import clock
import os
import sqlite3

data = sqlite3.connect('data.db')


t0 = clock()
with open("data.json") as f:
    for line in f:
        do some operations
        do some sqlite queries
        print(clock()-t0)

为什么显示的时间print(clock()-t0)与实际经过的时间不对应?它低估了经过的时间约4倍。

标签: pythontime

解决方案


https://docs.python.org/2.7/library/time.html

time.clock()
在 Unix 上,以浮点数形式返回当前处理器时间,以秒为单位。精度,实际上是“处理器时间”含义的定义,取决于同名 C 函数的精度,但无论如何,这是用于对 Python 或计时算法进行基准测试的函数。

在 Windows 上,此函数根据 Win32 函数 QueryPerformanceCounter() 以浮点数形式返回自第一次调用此函数以来经过的挂钟秒数。分辨率通常优于一微秒。

如您所见,它依赖于平台。更好的解决方案是使用 datetime.now()

from datetime import datetime

t0 = datetime.now()
# ... do something ...
elapsed = datetime.now() - t0

推荐阅读