Я хочу выполнять функцию каждые 60 секунд на Python, но я не хочу, чтобы меня блокировали между тем.Как выполнять функцию асинхронно каждые 60 секунд в Python?
Как я могу сделать это асинхронно?
import threading
import time
def f():
print("hello world")
threading.Timer(3, f).start()
if __name__ == '__main__':
f()
time.sleep(20)
С помощью этого кода функция f выполняется каждые 3 секунды в течение 20 секунд времени. В конце он дает ошибку, и я думаю, что это потому, что threading.timer не был отменен.
Как я могу отменить его?
Заранее благодарен!
Ваша программа заканчивается после нереста первого таймера. –
Чтобы отменить Таймер, вам нужно где-то ссылаться на него и вызвать его метод 'cancel'. –
Обратите внимание, что все решения, опубликованные до сих пор, страдают от (небольшого) кумулятивного нарастания ошибки. То есть вместо вычисления следующей продолжительности сна, основанной на фиксированном времени начала, они просто спят за «еще 60 секунд». Это никогда не будет спать меньше 60 лет и обычно будет спать чуть больше 60 секунд. Это не всегда проблема, но если вы хотите спать ровно 1440 раз в день, убедитесь, что вы компенсируете эту ошибку. –