为什么每次使用time.time() 来测量执行时间return 的结果都不一样?

Why does using time.time() to measure the execution time return different results each time?

我正在尝试测量我使用的函数的时间:

start = time.time()
function("does_something")
end = time.time()
function_time = end - start 

然而,每次我 运行 我都会得到一个(稍微)不同的解决方案。这是什么原因? 我知道我可以做一个 Monte Carlo 模拟来使这个测量更加可靠,但我很想知道造成这种结果差异的原因是什么。

即使您计算机中的 CPU 可能包含多个内核,您操作系统中的调度程序也会将小的时隙分配给所有想要 运行 在不同 CPU 核心。您的程序获得多少时间取决于请求处理器时间的进程数量及其相对优先级。

time.time() returns纪元以来的时间(“wall time”),它将受到调度等因素的影响。

您可以尝试使用 time.process_time()。 这只计算系统和用户 CPU 时间 你的进程 ,所以它应该有更少的变化。

CPU 不过,时间并不是唯一的瓶颈。磁盘 I/O 和网络 I/O 都比 CPU 慢几个数量级。对于像例如这样的单个程序来说非常容易。 netcat 使 100 Mbit/s 网络饱和 link。

所以如果你的程序尝试做网络 I/O 如果你是同时流式传输视频或下载软件。