python 高精度时间_Python中的高精度时钟

大卫的帖子试图显示Windows上的时钟分辨率是多少。我被他的输出搞糊涂了,所以我写了一些代码,显示我的Windows 8 x64笔记本电脑上的time.time()分辨率为1毫秒:# measure the smallest time delta by spinning until the time changes

def measure():

t0 = time.time()

t1 = t0

while t1 == t0:

t1 = time.time()

return (t0, t1, t1-t0)

samples = [measure() for i in range(10)]

for s in samples:

print s

哪些输出:(1390455900.085, 1390455900.086, 0.0009999275207519531)

(1390455900.086, 1390455900.087, 0.0009999275207519531)

(1390455900.087, 1390455900.088, 0.0010001659393310547)

(1390455900.088, 1390455900.089, 0.0009999275207519531)

(1390455900.089, 1390455900.09, 0.0009999275207519531)

(1390455900.09, 1390455900.091, 0.0010001659393310547)

(1390455900.091, 1390455900.092, 0.0009999275207519531)

(1390455900.092, 1390455900.093, 0.0009999275207519531)

(1390455900.093, 1390455900.094, 0.0010001659393310547)

(1390455900.094, 1390455900.095, 0.0009999275207519531)

还有一种方法,对delta进行1000个样本的平均值:reduce( lambda a,b:a+b, [measure()[2] for i in range(1000)], 0.0) / 1000.0

两次连续运行时的输出:0.001

0.0010009999275207519

所以我的Windows 8 x64上的time.time()分辨率是1毫秒。

对time.clock()执行类似的运行将返回0.4微秒的分辨率:def measure_clock():

t0 = time.clock()

t1 = time.clock()

while t1 == t0:

t1 = time.clock()

return (t0, t1, t1-t0)

reduce( lambda a,b:a+b, [measure_clock()[2] for i in range(1000000)] )/1000000.0

返回:4.3571334791658954e-07

即~0.4e-06

关于time.clock()的一个有趣的事情是,它返回自第一次调用该方法以来的时间,因此如果您想要微秒分辨率的墙时间,可以执行以下操作:class HighPrecisionWallTime():

def __init__(self,):

self._wall_time_0 = time.time()

self._clock_0 = time.clock()

def sample(self,):

dc = time.clock()-self._clock_0

return self._wall_time_0 + dc

(这可能会在一段时间后漂移,但您可以偶尔更正,例如dc > 3600将每小时更正一次)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值