【发布时间】:2012-06-04 12:08:22
【问题描述】:
我想要的是能够每秒运行一个函数,与函数需要多长时间无关(它应该总是在一秒以下)。我考虑了许多选项,但不确定哪个最好。
如果我只使用延迟函数,它不会考虑函数运行所需的时间。
如果我对函数进行计时,然后从一秒中减去它并在延迟中弥补其余部分,则不会考虑时间计算。
我尝试使用 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()
有没有一种方法可以做到这一点与函数花费的时间长度无关?
【问题讨论】:
-
我的另一个解决方案stackoverflow.com/a/10718961/709852 应该可以解决这个问题。实际上,该解决方案更适合,因为时间分辨率似乎较低,并且可能跨平台工作。
-
你希望它在后台线程还是在主线程中循环?
标签: python