4

Python 的threading.Timer时间精度取决于什么?

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

4

1 回答 1

7

在 CPython 中,threading.Timer 精度(等待部分)基于 Condition.wait() 调用。

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

但是, time.sleep() 的准确性取决于所使用的操作系统(这里是实现:floatsleep()),在 Windows 上,它使用WaitForSingleObject()带有内部 Windows 计时器的,在 Linux 上它使用该select()方法。

至少,因为除了睡眠延迟,操作系统的收费会干扰python进程的反应性,调度算法也会对准确性产生影响。

于 2011-09-28T12:15:25.860 回答