【发布时间】:2021-05-27 02:03:46
【问题描述】:
我想每 3 秒运行一次函数,并且我确实搜索过类似的主题。但是,我没有找到任何真正能满足我要求的解决方案,关键问题是在这些解决方案中,他们没有考虑函数本身的执行时间。考虑以下代码。
import datetime as dt
import time
import threading
def counting():
global num
time_now = dt.datetime.now()
if num > 0:
print(f'count: {num}, time now: {time_now}')
num -= 1
t = threading.Timer(3.0, counting)
t.start()
num = 5
counting()
每 3.0 秒打印一次。主要问题是,在实际案例中,我将调用一个函数,例如 func1(),而不是 print(f'count: {num}, time now: {time_now}') ,这将需要 1 秒到 2.5 秒之间的时间。因此,两次通话之间的实际间隔时间将超过 3 秒(约 4-5.5 秒)。我怎样才能在两次调用之间每 3 秒准确地写一次(当然,允许非常小的错误)?谢谢!
【问题讨论】:
标签: python multithreading datetime time