time.sleep() Function Explained

time.sleep() pauses a Python program for a set amount of time.

It is a simple and useful function for:

  • adding a delay in a script
  • building a basic countdown
  • spacing out repeated output
  • practicing program flow

This function is part of Python’s time module, so you must import that module before using it.

Quick example

import time

print("Start")
time.sleep(2)
print("After 2 seconds")

Use time.sleep(seconds) to pause the program. The value can be an integer like 2 or a decimal like 0.5.

What time.sleep() does

time.sleep() stops your program for a number of seconds.

Key points:

  • It pauses program execution.
  • It belongs to the built-in time module.
  • You must write import time before using it.
  • It accepts whole numbers like 2 and decimal numbers like 0.5.

If you are new to modules, see Python modules explained first.

Basic syntax

The basic syntax is:

time.sleep(seconds)

Here, seconds is the length of the pause.

Examples:

  • time.sleep(1) pauses for about one second
  • time.sleep(0.25) pauses for about a quarter of a second

A full example:

import time

time.sleep(1)
print("Done waiting")

Simple example

This example prints one message, waits, and then prints another message:

import time

print("Before pause")
time.sleep(3)
print("After pause")

Expected output order:

Before pause
After pause

You will see Before pause first. Then the program waits about 3 seconds. After that, it prints After pause.

Using time.sleep() in a loop

time.sleep() is often used inside loops.

This is useful for:

  • countdowns
  • repeated messages
  • making output easier to follow

Example:

import time

for i in range(3):
    print("Loop number:", i)
    time.sleep(1)

print("Finished")

What happens:

  • The loop prints a line.
  • The program pauses for 1 second.
  • The loop continues.
  • After the loop ends, Finished is printed.

A beginner-friendly real use case is a countdown timer. For a complete example, see Python countdown timer example.

What value to pass

You can pass different kinds of numbers to time.sleep().

Full seconds

Use an integer when you want a whole number of seconds:

import time

time.sleep(2)
print("Waited 2 seconds")

Fractional seconds

Use a float when you want a shorter pause:

import time

time.sleep(0.5)
print("Waited half a second")

Zero

0 is valid, but it usually creates no visible delay:

import time

time.sleep(0)
print("No visible pause")

Negative numbers

Negative numbers are not valid.

This will cause an error:

import time

time.sleep(-1)

Common errors and confusion

Beginners often run into a few common problems with time.sleep().

Forgetting to import time

This causes a NameError:

time.sleep(2)

Python does not know what time means unless you import it first.

Correct version:

import time

time.sleep(2)

If you want help with this error, see NameError: name is not defined.

Passing a string instead of a number

This causes a TypeError:

import time

time.sleep("2")

"2" is a string, not a number.

Correct version:

import time

time.sleep(2)

You can also convert user input if needed:

import time

seconds = float(input("Enter seconds: "))
time.sleep(seconds)
print("Done")

Using sleep() without the module name

This does not work if you only wrote import time:

import time

sleep(2)

With import time, you must write:

import time

time.sleep(2)

Another valid option is:

from time import sleep

sleep(2)
print("Done")

For beginners, import time and time.sleep(...) is usually clearer.

Expecting exact timing

time.sleep() usually waits about the amount of time you requested, but it is not perfectly exact.

Small timing differences can happen because of:

  • your operating system
  • other programs running
  • normal scheduling delays

So time.sleep(1) means “wait about 1 second,” not “wait with perfect precision.”

When to use it

time.sleep() is a good choice for simple beginner programs.

Common uses:

  • simple delays in scripts
  • basic countdown timers
  • spacing out repeated actions
  • learning how program flow works

It is especially helpful when you want to see your program run step by step.

When not to use it

time.sleep() is not the best tool in every situation.

It is not ideal when:

  • you need precise timing
  • your program must stay responsive during the delay
  • you want other work to continue at the same time

To beginners, a sleeping program can look frozen. That is normal. While the program is sleeping, that part of the code is not doing anything else.

FAQ

Does time.sleep() use seconds or milliseconds?

It uses seconds. You can use decimals for part of a second, such as 0.5.

Can I use time.sleep(0.1)?

Yes. A float value is valid and pauses for a fraction of a second.

Why does my program seem frozen?

time.sleep() pauses execution, so nothing else in that part of the program runs during the delay.

Why do I get an error when I use sleep(2)?

You probably forgot to import it correctly.

Use:

import time
time.sleep(2)

Or:

from time import sleep
sleep(2)

Is the delay always exact?

No. It is usually close, but the exact timing can vary slightly.

See also