我想要的是能够每秒运行一个函数,而与该函数花费多长时间无关(它应该始终在一秒钟之内)。我考虑了很多选择,但不确定哪个是最好的。
如果我仅使用延迟功能,则不会考虑该功能运行的时间。
如果我对函数计时,然后从一秒钟中减去该函数,然后补足延迟中的其余部分,则不会考虑时间计算。
我尝试使用threading.timer(我不确定这是如何工作的来龙去脉),但它的确比1s慢。
这是我尝试测试threading.timer的代码:
def update(i): sys.stdout.write(str(i)+'\r') sys.stdout.flush() print i i += 1 threading.Timer(1, update, [i]).start()
有没有办法与函数花费的时间长短无关?
这样就可以做到,其准确性不会随时间而变化。
import time start_time = time.time() interval = 1 for i in range(20): time.sleep(start_time + i*interval - time.time()) f()