Я хочу выполнять FUNCTION периодически каждые 60 секунд, но я не хочу выполнять FUNCTION снова, если предыдущий запуск еще не завершен. Если предыдущий прогон завершается, например, через 120 с, я хочу немедленно выполнить новый вызов FUNCTION. Если предыдущий запуск завершился, например, за 10 секунд, то я хочу подождать 50 секунд, прежде чем выполнить новый вызов FUNCTION.
Пожалуйста, ознакомьтесь с моей реализацией ниже.
Могу ли я добиться этого, например, с помощью subprocess.run или некоторых других библиотека timel oop, чтобы реализация была намного чище?
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)