小编典典

每秒运行python函数

python

我想要的是能够每秒运行一个函数,而与该函数花费多长时间无关(它应该始终在一秒钟之内)。我考虑了很多选择,但不确定哪个是最好的。

如果我仅使用延迟功能,则不会考虑该功能运行的时间。

如果我对函数计时,然后从一秒钟中减去该函数,然后补足延迟中的其余部分,则不会考虑时间计算。

我尝试使用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()

有没有办法与函数花费的时间长短无关?


阅读 214

收藏
2021-01-16

共1个答案

小编典典

这样就可以做到,其准确性不会随时间而变化。

import time

start_time = time.time()
interval = 1
for i in range(20):
    time.sleep(start_time + i*interval - time.time())
    f()
2021-01-16