关于unix:时间命令的令人费解的输出

Puzzling output of the time command

我正在尝试对其中一个脚本的运行时间进行基准测试。我得到以下输出

1
2
3
4
5
#time ./foo.py
real    0m37.883s
user    1m0.648s
sys     0m4.680s
#

在内部,foo生成多个其他进程,并等待所有进程都死亡。从这个线程和我之前对real、user和sys时间的理解来看,我认为real-time至少等于user-time。这是因为实时是从开始到结束的所有时间(也包括其他进程使用的时间片)。而用户时间只是由在进程内的用户模式代码中花费的CPU时间组成。那么,在这里,用户时间如何大于实时时间呢?是因为所有子进程的用户时间都被添加了吗?


实时有时被称为挂钟时间。它是在程序执行期间经过的时间。如果代码听起来像您的代码一样是多线程的,那么用户时间可以是实时的很多倍。是的,它基本上是为线程添加用户时间;类似的推理也适用于系统时间。