Open In App

How to add Time Delay in Python?

Last Updated : 25 Jun, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

A time delay means pausing the program for a short period before continuing to the next step. This is useful when you want to slow down the execution, like waiting between messages or steps in a loop. In Python, you can add a delay using the sleep() function from the time module, where you specify how many seconds the program should wait.

Now let's look at different ways to pause/delay execution in Python.

Using time.sleep() function

The time.sleep() function pauses the program for a set number of seconds before continuing. It's the simplest way to add a delay in execution.

Syntax:

time.sleep(seconds)

seconds: The number of seconds to pause the program (can be an integer or float).

Example 1: Printing the numbers by adding a time delay.

Python
import time
for i in range(0,5):
  print(i)
  time.sleep(2)

Output

Explanation: It prints numbers one by one from 0 to 4, pausing 2 seconds between each print.

Example 2: Dramatic printing using sleep() for every character.

Python
import time

msg = input("Enter your message: ")
for char in msg:
    print(char, end="")
    time.sleep(0.5)

Output

Explanation:

  • The code prints each character of a string with a 0.5-second delay using time.sleep().
  • It creates an auto-typing effect on the screen.

Example 3: Printing the pattern by taking range from the user and adding time delay.

Python
import time

num = int(input("Enter the range: "))
print("Printing the pattern")

for i in range(0, num):
    for j in range(0, i + 1):
        print('*', end=' ')
        time.sleep(0.5)
    print(' ')

Output

Explanation:

  • It prints a right-angled triangle pattern of asterisks (*) using nested loops.
  • Each * is printed with a 0.5-second delay to create a slow, step-by-step visual effect.

Example 4: Multithreading using sleep()

Python
import time
from threading import Thread

class Geeks(Thread):
    def run(self):
        for x in range(4):
            print("Geeks")
            time.sleep(2.2)

class For(Thread):
    def run(self):
        for x in range(3):
            print('For')
            time.sleep(2.3)

print("Hello")

g1 = Geeks()
f1 = For()

g1.start()
f1.start()

g1.join()
f1.join()

print("All Done!!")

Output

Explanation:

  • Two classes Geeks and For run in separate threads and print "Geeks" and "For" multiple times with delays.
  • Both threads start together and print messages at the same time.
  • After both finish, the program prints "All Done!!".

Using threading.Event.wait function

threading.Event().wait() function pauses a thread for a specified time without blocking other threads. It's similar to time.sleep() but works well in multithreading scenarios.

Syntax:

threading.Event().wait(timeout)

timeout: Number of seconds to wait. If not given, it waits indefinitely until the event is set.

Example:

Python
import threading

d = 2
print('Geeks')
threading.Event().wait(d)
print('for')
threading.Event().wait(d)
print('Geeks')

Output

Geeks
for
Geeks

Explanation: It creates a typing effect with pauses, using threading.Event().wait() as an alternative to time.sleep() for delaying execution without blocking other threads (if used in multithreaded programs).

Using threading.Timer class

threading.Timer class runs a function after a specified delay in a separate thread. It's useful for scheduling tasks without blocking the main program.

Syntax:

threading.Timer(interval, function, args=None, kwargs=None)

  • interval: Time (in seconds) to wait before running the function.
  • function: The function to execute after the delay.
  • args (optional): Tuple of arguments for the function.
  • kwargs (optional): Dictionary of keyword arguments for the function.

Example:

Python
import threading

def gfg():
    print("Computer Science: GeeksforGeeks\n")

t = threading.Timer(1.0, gfg)
t.start()
print("Timer")

Output

Timer
Computer Science: GeeksforGeeks

Explanation:

  • Prints "Timer" right away. Then, after a 1-second delay, it runs the gfg() function in the background and prints "Computer Science: GeeksforGeeks".
  • The delay doesn’t stop the main program.

Using time.monotonic() and time.monotonic_ns() functions

time.monotonic() and time.monotonic_ns() return a clock value that always moves forward, making them useful for measuring time gaps. They aren’t affected by system clock changes. monotonic_ns() gives the time in nanoseconds for higher precision.

Example 1: With time.monotonic() function

Python
import time
t = time.monotonic()
d = 5

while True:
    t2 = time.monotonic()
    t3 = t2 - t
    if t3 >= d:
        break

print("Time delay of 5 seconds is over!")

Output
Time delay of 5 seconds is over!

Explanation: Measures a 5-second delay using time.monotonic() by checking the time difference in a loop, then prints a message when the delay is over.

Example 2: With time.monotonic_ns() function

Python
import time
t = time.monotonic_ns()
d = 5_000_000_000

while time.monotonic_ns() - t < d:
    pass

print("Time delay of 5 seconds is over!")

Output

Time delay of 5 seconds is over!

Explanation: It waits for 5 seconds using high-precision time.monotonic_ns(). After the delay, it prints a message saying the time is over.

Related Articles:


Practice Tags :

Similar Reads