【发布时间】:2026-02-06 04:20:05
【问题描述】:
我正在尝试在指定的时间后完全循环一个特定的函数。
我考虑过为此使用 time.sleep(),但是 time 模块不计算函数本身的运行时间。
例如:
def function(*args, **kwargs):
## Some processing happens here that takes 0.9 seconds
time.sleep(1)
这个函数需要 1.9 秒来执行。但是,我希望它每秒执行一次,包括运行该函数所花费的时间。
我不知道函数内的确切处理时间;可能需要 0.9、0.92、0.88、... 秒,所以我不能简单地使用 time.sleep(0.1)。
我可以对函数计时并从睡眠时间中减去它,如下所示:
def function(*args, **kwargs):
start = time.time()
## Some processing happens here that takes 0.9 seconds
end = time.time()
sleep_time = 1 - (end-start)
time.sleep(sleep_time)
但是,对代码进行计时和做减法本身并不需要处理时间,这意味着整个函数需要 1 秒多一点,一段时间后调度会不正确?
这似乎是我可以使用 Threading 完成的事情,但是我一直都知道,除非你绝对需要它来加速运行时,否则不应包含线程,而在我的情况下它不会......
有什么想法吗?
【问题讨论】:
标签: python multithreading time