В прошлой статье про модуль времени, мы с вами немного коснулись функции time.sleep(). Данная функция приостанавливает на определенное пользователем время, текущий поток. Скорее всего я не ошибусь, если скажу, что данная функция является наиболее часто используемой в модуле time. Спектр применений этой функции довольно широкий, на примерах рассмотрим как все это работает.
Пример 1: Python sleep
import time
print("Printed.")
time.sleep(2.4)
print("Печать после 2.4 сек.")
Разберем пример выше.
- Печатается «Printed»
- Приостанавливается выполнение программы на 2.4 секунды
- Возобновляется работа программы
Вы уже наверное смогли заметить, что функция sleep(), может принимать в качестве аргумента число, которое является секундой.
Пример 2: Python цифровые часы
Ниже мы рассмотрим код программы, которая создает цифровые часы.
import time
while True:
localtime = time.localtime()
result = time.strftime("%I:%M:%S %p", localtime)
print(result)
time.sleep(1)
Результат:
02:10:50 PM
02:10:51 PM
02:10:52 PM
02:10:53 PM
02:10:54 PM
... .. ...
Что мы сделали в данной программе? Мы определили текущее время, и внутри бесконечного цикла while, каждую секунду печатаем время.
Пример 3: Многопоточность Python
Программы описанные выше, являются однопоточными. Ниже рассмотрим пример многопоточной программы в Python. Многопоточность для нас пока еще является новой темой, но в скором времени, мы научимся создавать многопjточные приложения.
Для работы многопоточности, нам необходимо использовать, модуль threading
import threading
def print_hello_three_times():
for i in range(3):
print("Hello")
def print_hi_three_times():
for i in range(3):
print("Hi")
t1 = threading.Thread(target=print_hello_three_times)
t2 = threading.Thread(target=print_hi_three_times)
t1.start()
t2.start()
Результат:
Hello
Hello
Hi
Hello
Hi
Hi
Приведенная выше программа, имеет два потока выполнения t1 и t2. Потоки запускаются с помощью t1.start() и t2.start(). Обращаю ваше внимание на то, что данные потоки в этой программе запускаются одновременно, и результат у вас может быть разным.
С помощью функции time.sleep() вы можете останавливать работу одного потока на нужное количество времени. В приведенном ниже примере рассмотрим использование time.sleep() в многопоточной программе.
Пример 4: sleep() в многопоточной программе
import threading
import time
def print_hello():
for i in range(4):
time.sleep(0.5)
print("Hello")
def print_hi():
for i in range(4):
time.sleep(0.7)
print("Hi")
t1 = threading.Thread(target=print_hello)
t2 = threading.Thread(target=print_hi)
t1.start()
t2.start()
Как вы можете заметить в приведенной выше программе, мы использовали функцию time.sleep() и приостановили работу потоков на 0.5 и 0.7 секунд соответственно.