threading.Timer时间精度

时间:2011-09-28 11:46:56

标签: python timer time-precision

Python's threading.Timer的时间准确度取决于什么?

是否取决于所使用的操作系统?
它取决于所使用的Python实现吗? 它取决于间隔吗?
如何进行基准测试?
那里有基准吗?

1 个答案:

答案 0 :(得分:6)

在CPython中,threading.Timer准确性(waiting part)基于Condition.wait()调用。

Condition.wait()(implemented here)由连续睡眠完成,延迟为min(delay * 2, remaining, .05),其中延迟最初设置为0.0005 # 500 us -> initial delay of 1 ms。根据这个实现(即操作系统独立),我们可以说精确度至少是time.sleep准确度。

但是,time.sleep()的准确性基于所使用的操作系统(here is the implementation : floatsleep()),在Windows上,它使用带有内部Windows计时器的WaitForSingleObject(),在Linux上它使用{{ 1}}方法。

至少,因为除了睡眠延迟,OS的电荷可能会干扰python过程的反应性,调度算法也会对精度产生影响。