zer*_*uno 55 python python-3.x
我对新功能的一些问题time.perf_counter()
和time.process_time()
.
对于前者,来自文档:
返回性能计数器的值(以小数秒为单位),即具有最高可用分辨率的时钟,以测量短持续时间.它确实包括睡眠期间经过的时间,并且是系统范围的.返回值的参考点未定义,因此只有连续调用结果之间的差异才有效.
所有系统上的"最高分辨率"是否相同?或者它是否总是略有依赖,例如,我们使用linux或Windows?
问题来自于阅读time.time()
它的文档说"并非所有系统都提供比1秒更好的精度",那么它们如何能够提供更好更高的分辨率呢?
关于后者,time.process_time()
:
返回当前进程的系统和用户CPU时间总和的值(以小数秒为单位).它不包括睡眠期间经过的时间.根据定义,它在整个过程中.返回值的参考点未定义,因此只有连续调用结果之间的差异才有效.
我不明白,那些'系统时间'和'用户CPU时间'是什么?有什么不同?
ise*_*dev 69
在这种情况下,"时间"有两种不同的类型:绝对时间和相对时间.
绝对时间是'真实世界时间',它由time.time()
我们都习惯处理而返回.它通常是从过去的固定时间点(例如,1970年1月1日的00:00:00 UTC的UNIX时期)以至少1秒的分辨率测量的.现代系统通常提供毫秒或微秒的分辨率.它由大多数计算机上的专用硬件维护,RTC(实时时钟)电路通常由电池供电,因此系统可以跟踪上电之间的实时时间.这个"真实世界时间"也可能会根据您的位置(时区)和季节(夏令时)进行修改,或者表示为与UTC的偏移(也称为GMT或Zulu时间).
其次,有相对时间,由time.perf_counter
和返回time.process_time
.这种类型的时间与现实世界时间没有明确的关系,因为这种关系是系统和实现特定的.它只能用于测量时间间隔,即无单位值,它与两个瞬间之间经过的时间成比例.这主要用于评估相对性能(例如,此版本的代码是否比该代码版本运行得更快).
在现代系统中,它使用CPU计数器进行测量,该CPU计数器以与CPU硬件时钟相关的频率单调增加.计数器分辨率高度依赖于系统的硬件,在大多数情况下,该值不能与现实世界时间可靠地相关,甚至在系统之间进行比较.此外,每次CPU上电或复位时,计数器值都会复位.
time.perf_counter
返回计数器的绝对值.time.process_time
是一个从CPU计数器派生的值,但仅在给定进程在CPU上运行时才更新,并且可以分解为"用户时间",即进程本身在CPU上运行的时间,以及'系统time',即操作系统内核代表进程在CPU上运行的时间.
归档时间: |
|
查看次数: |
33986 次 |
最近记录: |