我想每 60 秒定期执行一次 FUNCTION,但如果之前的运行尚未完成,我不想再次执行 FUNCTION。如果上一次运行在例如 120 秒内完成,那么我想立即执行一个新的 FUNCTION 调用。如果之前的运行在例如 10 秒内完成,那么我想在执行新的 FUNCTION 调用之前等待 50 秒。
请在下面查看我的实现。
我可以使用 subprocess.run 或一些 timeloop 库来实现它,以便实现更清晰吗?
import time
def hello(x):
# some logic here
# execution could take any time between e.g. <10s, 120s>
def main(ii):
while True:
start = int(time.time())
try:
val = next(ii)
except StopIteration as ex:
return None
else:
hello(val)
run_time_diff = int(time.time()) - start
if run_time_diff < 60:
time.sleep(60 - run_time_diff)
ii = iter(list[[...],[...],...[...]])
main(ii=ii)