Let’s say you want to run a Python script python every 10 seconds. You can stay there and execute the function manually every 10 seconds later via the terminal or the editor button, or you can use read this article and learn how to schedule the execution of your function to run automatically.
To Execute a function every x seconds in Python:
- Use the time.sleep() method
- Use the sched module
- Use the apscheduler module
- Use the threading module
1. time.sleep() – Run Function Every x Seconds
The most common way to execute a function every x seconds in Python is to use the time.sleep() method. The time.sleep() function is a Python built-in function that is used to make the program sleep for the time specified.
We can use the time.sleep() to execute every x seconds. There are two different ways of using time.sleep():
1.1 The wrong way to use time.sleep():
The below code doesn’t execute every 60 seconds. it puts a 60-second gap between executions. It only happens every 60 seconds if your executed code takes no time.
import time while True: # Code executed here time.sleep(60)
1.2 The Good way to use the time.sleep()
Now look at the below code, this is the best method to execute a Python code every
x Seconds. It takes care of the time taken by the code execution. So this is a strongly recommended method if you are using time.sleep() method for the execution of code repeatedly.
import time starttime = time.time() while True: print("tick") # Remove the Time taken by code to execute time.sleep(60.0 - ((time.time() - starttime) % 60.0))
2. sched module to execute Python code after interval
We can use the sched module to call the function or a block of python code after some interval using the sched module. The sched module is a python module that is used for scheduling the code.
import sched, time s = sched.scheduler(time.time, time.sleep) def do_something(sc): print("Doing stuff...") # do your stuff sc.enter(60, 1, do_something, (sc,)) s.enter(60, 1, do_something, (s,)) s.run()
3. apscheduler module in Python to execute the function every x seconds
You can use this third party apscheduler module in python. It is very helpful in other ways as well. You can provide other functions like blockscheduler, TwistedScheduler and many more.
from apscheduler.schedulers.background import BlockingScheduler def print_t(): pass sched = BlockingScheduler() sched.add_job(print_t, 'interval', seconds =60) #will do the print_t work for every 60 seconds sched.start()
4. Use threading module to execute a function after an interval
Here is a python code, that shows you how to use the threading module to execute a function after some interval. You can check it out.
import threading import time class RepeatedTimer(object): def __init__(self, interval, function, *args, **kwargs): self._timer = None self.interval = interval self.function = function self.args = args self.kwargs = kwargs self.is_running = False self.next_call = time.time() self.start() def _run(self): self.is_running = False self.start() self.function(*self.args, **self.kwargs) def start(self): if not self.is_running: self.next_call += self.interval self._timer = threading.Timer(self.next_call - time.time(), self._run) self._timer.start() self.is_running = True def stop(self): self._timer.cancel() self.is_running = False
I am a software Engineer having 4+ Years of Experience in Building full-stack applications.