关于jupyternotebook中的cpu时间和墙时间的问题



作为一名物理专业的学生,我有一个关于程序运行时的问题想问你。

我正在做一个关于算法优化的小项目,我的玩具代码是在jupyternotebook上写的,但当我在cell中使用%%time%timeit来测试我的代码的cpu时间和墙时间时,我发现以下结果

CPU时间:总计:2min 16s壁时间:24.2s

这两次之间的巨大差距让我怀疑,我的困惑是

  1. 我应该用哪个作为衡量算法速度的标准,尽管我知道用python来衡量代码速度是不合理的
  2. 为什么这两者之间的时间差距看起来如此之大

真的很期待好心人对这个问题的任何见解

首先,什么是Wall时间:它是运行单元格所需的总时间。其次,CPU时间是CPU计算不同内核所花费的时间。

例如,如果我有一个单元格,它需要1秒的墙时间。如果这个单元在整个时间内使用2个核心,我们将获得2s的CPU时间。

对于你的第二个问题,你的结果似乎表明,你在微积分中平均使用了5.6个核心。您可能正在使用一些使用numba进行并行化的模块,因为它是物理学中最常见的模块。

回到你的第一个问题,我建议你使用%prun使用探查器运行你的单元,这样你就会知道你的程序在哪里花费了更多的时间,哪些部分需要优化。

1-CPU时间可以细分为几次,如果你不知道CPU时间是如何细分的,你应该使用壁时间,也就是实时运行时间。

2-它们可能是造成巨大差距的许多原因:CPU时间包括:空闲时间、等待系统资源可用的时间等。而墙时间如果只有:完成日期-开始日期

最新更新