Python має модуль time, який містить декілька корисних функцій для вирішення завдань, пов’язаних із часом. Одним із популярних є метод time.sleep().
Метод time.sleep() в Python
Метод time.sleep() призупиняє виконання потоку коду на задану кількість секунд. Наприклад:
|
1 2 3 4 5 |
import time print("Printed immediately.") time.sleep(2.4) print("Printed after 2.4 seconds.") |
Результат:
Printed immediately.
Printed after 2.4 seconds.
Ось як працює ця програма:
виводиться "Printed immediately";
функція time.sleep(2.4) призупиняє виконання на 2.4 секунди;
виводиться "Printed after 2.4 seconds".
Створення цифрового годинника в Python
За допомогою методу time.sleep() ми можемо створити власний цифровий годинник. Наприклад:
|
1 2 3 4 5 6 7 |
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.
Багатопотоковість в Python
Перед обговоренням методу time.sleep() у багатопотокових програмах, спочатку поговоримо про процеси та потоки.
Комп’ютерна програма — це набір інструкцій. Процес — це виконання цих інструкцій. Потік — це підмножина процесу. Процес може мати один чи декілька потоків.
Усі вищезазначені програми є однопотоковими. Нижче наведено приклад багатопотокової програми в Python:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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(). Зверніть увагу, що t1 та t2 запускаються одночасно і ми отримуємо різні результати.
Метод time.sleep() в багатопотокових програмах в Python
У випадках з однопотоковими програмами метод time.sleep() припиняє виконання потоку та процесу. Однак метод зупиняє потік, а не весь процес у багатопотокових програмах.
Приклад використання методу time.sleep() у багатопотоковій програмі:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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() |
Результат:
Hello
Hi
Hello
Hi
Hello
Hello
Hi
Hi
Дана програма має два потоки. Ми використали time.sleep(0.5) та time.sleep(0.75) для припинення цих двох потоків на 0.5 секунд і 0.7 секунд відповідно.
