擅长:python、mysql、java
<ol>
<li><p>如果每次都不需要一个新线程,就不要使用<code>threading.Timer</code>;要周期性地运行一个函数,<code>sleep</code>在一个循环中就可以了(可能在一个单独的线程中)。</p></li>
<li><p>无论您使用什么方法来计划下一次执行,都不要等待您使用的确切时间量,因为其他语句的执行需要时间,因此您可以看到结果是漂移的。相反,在变量中记下初始时间,并在每次迭代时计算下一次要调度执行和睡眠的时间,以计算现在和那时之间的差异。在</p>
<pre><code>interval = 1.
next_t = time.time()
while True:
next_t += interval
time.sleep(next_t - time.time())
# do whatever you want to do
</code></pre>
<p>(当然,您可以对其进行改进以获得更好的总体精度,但这至少应避免偏移)</p></li>
</ol>