aF. aF. - 1 year ago 84
Python Question

How to execute a function asynchronously every 60 seconds in Python?

I want to execute a function every 60 seconds on Python but I don't want to be blocked meanwhile.

How can I do it asynchronously?

import threading
import time

def f():
print("hello world")
threading.Timer(3, f).start()

if __name__ == '__main__':

With this code, the function f is executed every 3 seconds within the 20 seconds time.time.
At the end it gives an error and I think that it is because the threading.timer has not been canceled.

How can I cancel it?

Thanks in advance!

Answer Source

You could try the threading.Timer class:

import threading

def f():
    # do something here ...
    # call f() again in 60 seconds
    threading.Timer(60, f).start()

# start calling f now and every 60 sec thereafter