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.