为了账号安全,请及时绑定邮箱和手机立即绑定

在蟒蛇中测量长时间间隔

在蟒蛇中测量长时间间隔

杨魅力 2022-09-13 10:02:55
在Python 3.x中搜索了测量时间的不同方法之后,我决定使用时间模块中的perf_counter()函数。当我使用一个需要几秒钟运行的函数测试它时,它工作正常,但是我想从中提取计时结果的代码需要数十个小时才能运行。今天我得到了结果,令我惊讶的是,计时结果是以秒的几分之一为单位,这是荒谬的。因此,我来问你为什么会发生这种情况,以及如何在Python 3.x中准确测量较长的时间间隔。使用的代码如下:optimization_times = []for i in range(30):    # Search parameters on train set    print("Round %d" % i)    time_start = time.perf_counter()    solution = metaheuristic.optimize()    time_end = time.perf_counter()    # Keep time spent    optimization_times.append(time_end - time_start)操作系统: 乌班图 18.04提前感谢您。
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

你看到了一个环绕。

文档中

...具有最高可用分辨率的时钟,用于测量较短的持续时间。

如果您的间隔是几十个小时,您应该坚持使用 ,它有足够的分辨率来满足您的需求。time.time()

如果你认为你真的需要一个疯狂的精度数字,那么将time.time()与perf_counter()结合起来,并且旁边还有一个程序定期记录这两个值,这样你就可以同步perf_counter偏移量到全球时间。这样的日志对应于使 48 位计数器宽几位,它允许您观察每个环绕事件。


查看完整回答
反对 回复 2022-09-13
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

time.perf_counter() →浮子

返回性能计数器的值(以秒的小数部分为单位),即具有最高可用分辨率的时钟,用于测量较短的持续时间。它确实包括睡眠期间经过的时间,并且是系统范围的。返回值的参考点是未定义的,因此只有连续调用的结果之间的差异才有效。

--

“什么是小数秒?”

小数秒是时间中不是整数的部分。因此,如果您有像12345678.9这样的时间,则小数秒是0.9

(巴西尔·斯塔林凯维奇)


可能的解决方案是及时的

可能的解决方案是及时的:


import timeit

import time


def func():

    time.sleep(0.05)


timeit.timeit(lambda: func(), number=10)

输出:


0.528169795999986


查看完整回答
反对 回复 2022-09-13
  • 2 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号