猿问

用于测量代码运行时的时间和日期时间模块之间的差异

我正在使用 time 模块测量函数的响应时间。时间模块应该将秒数输出为浮点数,所以我保存了一个开始时间值 (time.clock()) 并在最后读取另一个读数,并将差异用作运行时。在观察结果时,我们注意到运行时间似乎很长——例如,似乎需要不到 2 秒的时间,打印为 3-and-change。基于感知到的问题,我决定使用 datetime 模块仔细检查结果。并排打印两个显示时间模块值几乎是日期时间值的两倍。


有谁知道为什么会这样?


这是我的代码:


for datum in data:

    start = datetime.datetime.now()

    startts = time.clock()

    check = test_func(datum)

    runtime = datetime.datetime.now() - start

    runts = time.clock() - startts

    print(check, "Time required:", runtime, "or", runts)

我的一些结果:


XYZ Time required: 0:00:01.985303 or 3.7836029999999994

XYZ Time required: 0:00:01.476289 or 3.3465039999999817

XYZ Time required: 0:00:01.454407 or 3.7140109999999993

XYZ Time required: 0:00:01.550416 or 3.860824000000008

我假设之前会注意到此类问题,而我只是在我的实现中缺少一些基本的东西。有人能指点我吗?



Helenr
浏览 201回答 2
2回答

小唯快跑啊

看起来 time.clock() 自 3.3 版以来已被弃用也许这会有所帮助?time.clock() 在 Unix 上,将当前处理器时间返回为以秒表示的浮点数。精度,实际上是“处理器时间”含义的定义,取决于同名 C 函数的精度。在 Windows 上,此函数根据 Win32 函数 QueryPerformanceCounter() 以浮点数形式返回自第一次调用此函数以来经过的挂钟秒数。分辨率通常优于一微秒。3.3 版后已弃用:此函数的行为取决于平台:使用 perf_counter() 或 process_time() 代替,具体取决于您的要求,以获得明确定义的行为。
随时随地看视频慕课网APP

相关分类

Python
我要回答