python - 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倍。
解决方案
从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
推荐阅读
- node.js - 一个反应原生项目安装错误
- javascript - Nodejs代码将输出作为承诺数组而不是解析值?
- python - 在多个异步调用者之间共享 aiohttp.ClientSession
- swift - ProgressView 进度卡在 1.0 或 0.0
- python - 如何更改 Pycharm ssh 解释器的默认启动位置
- rust - 远程连接时连接到 Substrate 前端模板时出错
- html - Webkit 滚动条 - 隐藏父元素的滚动条 Y,但在子元素上保持可见
- python - 获取包含一定数量节点的networkx子图
- mongodb - MongoDB 在线迁移到 CosmosDB
- javascript - 通过数组键匹配对象 - Lodash