相关疑难解决方法(0)

Python的time.clock()与time.time()的准确性?

哪个更适合用于Python中的计时?time.clock()或time.time()?哪一个提供更准确?

例如:

start = time.clock()
... do something
elapsed = (time.clock() - start)
Run Code Online (Sandbox Code Playgroud)

start = time.time()
... do something
elapsed = (time.time() - start)
Run Code Online (Sandbox Code Playgroud)

python time

416
推荐指数
11
解决办法
40万
查看次数

了解time.clock()和time.time()

即使他们被弃用,没有比一个更好的模块time(即timeit),我想知道这两种功能之间的差异time.clock()time.time().

从后者(time.time())开始,它基本上以秒为单位返回从01/01/1970(如果我没有错)经过的时间,精度一般为1秒."直到这里很容易.

相反,time.clock()仍然让我感到困惑.来自doc:

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

在Windows上,此函数返回自第一次调用此函数以来经过的挂钟秒,作为浮点数,基于Win32函数QueryPerformanceCounter().分辨率通常优于1微秒.

现在在Windows中它非常清楚time.time(),只有更好的精度才能做到这一点.

但在Unix/Linux中我无法理解.我尝试了以下代码:

import time

def procedure():
  time.sleep(2.5)

# measure process time
t0 = time.clock()
procedure()
print(time.clock() - t0, "process time")
Run Code Online (Sandbox Code Playgroud)

而我得到的5.300000000000096e-05 seconds process time对我来说真的很奇怪.

阅读这个已经发布的问题答案说:

[...] time.clock()测量当前进程使用的CPU时间量.

但我无法得到它,当前进程所用的时间在做什么?当我time.clock()在Unix上调用时,我得到一个浮点数,这在那一瞬间意味着什么?过程消耗的时间从?? 至 ??

python python-3.x

2
推荐指数
1
解决办法
1198
查看次数

time.h Clock() 在 OS X 上损坏?

我要疯了吗?我在 x86_64 上运行它。

#include <stdio.h>
#include <time.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    printf("Clock: %f\n", clock() / (double)CLOCKS_PER_SEC);
    sleep(1);
    printf("Clock: %f\n", clock() / (double)CLOCKS_PER_SEC);
    sleep(1);
    printf("Clock: %f\n", clock() / (double)CLOCKS_PER_SEC);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这打印

时钟:0.002880
时钟:0.002968
时钟:0.003019

它显然在线路上等待了一秒钟sleep(1),但输出显然是错误的。

如果这不起作用,是否有可移植的 C 替代方案?

c macos darwin clock time.h

1
推荐指数
1
解决办法
1541
查看次数

标签 统计

python ×2

c ×1

clock ×1

darwin ×1

macos ×1

python-3.x ×1

time ×1

time.h ×1