Функция sleep()
из модуля time предоставляет возможность задержать выполнение кода на определенное время в секундах. Фактически - sleep()
останавливает выполнение потока, но не всей программы в целом.
Синтаксис:
import time
time.sleep(secs)
Аргументы:
- В качестве аргумента
secs
передаем кол-во секунд в целочисленном значенииint
.
Пример как это работает:
import time
start_time = time.time()
print('Старт', start_time)
time.sleep(5)
end_time = time.time()
print('Конец', end_time - start_time)
Результат:
>>> Старт 1666202910.396888
>>> Конец 5.0018227100372314
Между принтами мы установили задержку в 5 секунд, и проверили с помощью модуля метода time.time()
работу time.sleep()
.
Если мы хотим задать задержку в миллисекундах, то например вместо 1 надо писать 0.100:
import time
start_time = time.time()
print('Старт', start_time)
time.sleep(0.100)
end_time = time.time()
print('Конец', end_time - start_time)
Результат:
>>> Старт 1666202990.3929803
>>> Конец 0.1011192798614502
Иногда возможно Вам пригодится задержка на разное время в секундах, это можно сделать следующим образом:
import time
for sec in [.5, .1, 1, 2]:
print(f'Ожидание в секундах: {sec} секунд')
time.sleep(sec)
Результат:
>>> Ожидание в секундах: 0.5 секунд
>>> Ожидание в секундах: 0.1 секунд
>>> Ожидание в секундах: 1 секунд
>>> Ожидание в секундах: 2 секунд
Также time.sleep()
важен для использования в многопоточности Python. Ниже пример, где показано, что time.sleep()
останавливает определенный поток на заданное время.
import time
from threading import Thread
class Worker(Thread):
def run(self):
for x in range(0, 11):
print(f'Поток с ожиданием в 1 секунду: {x}')
time.sleep(1)
class Waiter(Thread):
def run(self):
for x in range(10, 16):
print(f'Поток с ожиданием в 5 секунд: {x}')
time.sleep(5)
print('Запуск потока: Worker!')
Worker().start()
print('Запуск потока: Waiter!')
Waiter().start()
Результат:
>>> Запуск потока: Worker!
>>> Поток с ожиданием в 1 секунду: 0
>>> Запуск потока: Waiter!
>>> Поток с ожиданием в 5 секунд: 10
>>> Поток с ожиданием в 1 секунду: 1
>>> Поток с ожиданием в 1 секунду: 2
>>> Поток с ожиданием в 1 секунду: 3
>>> Поток с ожиданием в 1 секунду: 4
>>> Поток с ожиданием в 5 секунд: 11
>>> Поток с ожиданием в 1 секунду: 5
>>> Поток с ожиданием в 1 секунду: 6
>>> Поток с ожиданием в 1 секунду: 7
>>> Поток с ожиданием в 1 секунду: 8
>>> Поток с ожиданием в 1 секунду: 9
>>> Поток с ожиданием в 5 секунд: 12
>>> Поток с ожиданием в 1 секунду: 10
>>> Поток с ожиданием в 5 секунд: 13
>>> Поток с ожиданием в 5 секунд: 14
>>> Поток с ожиданием в 5 секунд: 15