Search code examples
pythonrepeatevent-loop

Repeat python function at every system clock minute


I've seen that I can repeat a function with python every x seconds by using a event loop library in this post:

import sched, time
s = sched.scheduler(time.time, time.sleep)
def do_something(sc): 
    print("Doing stuff...")
    # do your stuff
    s.enter(60, 1, do_something, (sc,))

s.enter(60, 1, do_something, (s,))
s.run()

But I need something slightly different: I need that the function will be called at every system clock minute: at 11:44:00PM, 11:45:00PM and so on.

How can I achieve this result?


Solution

  • Use schedule.

    import schedule
    import time
    
    schedule.every().minute.at(':00').do(do_something, sc)
    while True:
        schedule.run_pending()
        time.sleep(.1)
    

    If do_something takes more than a minute, turn it into a thread before passing it to do.

    import threading
    def do_something_threaded(sc):
        threading.Thread(target=do_something, args=(sc,)).start()