English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Python

Управление потоком Python

Функции в Python

Типы данных в Python

Файловые операции Python

Объекты и классы Python

Даты и время Python

Продвинутые знания Python

Руководство Python

sleep() в Python

функция sleep() приостанавливает (ожидалась) выполнение текущего потока в течение указанного числа секунд.

Python имеет модульtimeмодуль, который предоставляет некоторые полезные функции для выполнения задач, связанных с временем. Одна из常用的 функций - sleep().

Функция sleep() приостанавливает выполнение текущего потока на указанное количество секунд.

Пример 1: Python sleep()

import time
print("Immediate print")
time.sleep(2.4)
print("Печатать через 2.4 секунды")

Работа программы выглядит следующим образом:

  • "Immediate print" выводится

  • Пауза (задержка) выполнения через 2.4 секунды.

  • Печатается "Печатать через 2.4 секунды" .

Из上面的 примера можно увидеть, что sleep() принимает в качестве параметра浮инговое число.

До Python 3.5фактическое время паузы может быть меньше, чем указано параметром функции time().

С Python 3.5暂停时间 будет не менее указанного числа секунд.

Пример 2: Создание цифрового часов Python

import time
while True:
  localtime = time.localtime()
  result = time.strftime("%I:%M:%S %p", localtime)
  print(result)
  time.sleep(1)

В上面的 программе мы вычислили и распечатали бесконечноеwhile-циклвнутреннее текущее местное время . Затем программа ждет 1 секунду. Таким же образом, будет вычисляться и打印иться текущее местное время. Этот процесс продолжается.

Когда вы запустите программу, вывод будет похож на:

02:10:50 PM
02:10:51 PM
02:10:52 PM
02:10:53 PM
02:10:54 PM
... .. ...

Это улучшенная версия программы,略有修改。

import time
while True:
  localtime = time.localtime()
  result = time.strftime("%I:%M:%S %p", localtime)
  print(result, end="", flush=True)
  print("\r", end="", flush=True)
  time.sleep(1)

Многоядерные потоки в Python

Прежде чем обсуждать многоядерные программы с помощью sleep(), давайте поговорим о процессах и потоках.

Компьютерная программа - это набор инструкций. Процесс - это выполнение этих инструкций.

Треды являются подмножеством процесса. Процесс может иметь один или несколько потоков.

Пример 3: Многоядерные потоки Python

Все программы, приведенные выше, являются однопоточными программами. Это пример многониточной программы Python.

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() в многонитевых программах

Функция sleep() приостанавливает выполнение текущего потока на указанное количество секунд.

Если это однопотоковая программа, 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) и time.sleep(0.75), и время их паузы составляет 0.5 секунды и 0.7 секунды.