# Python `sleep()`

> 原文： [https://www.programiz.com/python-programming/time/sleep](https://www.programiz.com/python-programming/time/sleep)

#### `sleep()`函数在给定的秒数内挂起（等待）当前线程的执行。

Python 有一个名为[`time`](/python-programming/time "Python time Module")的模块，该模块提供了一些有用的函数来处理与时间有关的任务。 其中最流行的函数之一是`sleep()`。

`sleep()`函数在给定的秒数内暂停当前线程的执行。

* * *

## 示例 1：Python `sleep()`

```py
 import time

print("Printed immediately.")
time.sleep(2.4)
print("Printed after 2.4 seconds.") 
```

该程序的工作原理如下：

*   打印`"Printed immediately"`
*   暂停（延迟）执行 2.4 秒。
*   打印`"Printed after 2.4 seconds"`。

从上面的示例中可以看到，`sleep()`以浮点数作为参数。

**在 Python 3.5** 之前，实际的暂停时间可能小于为`time()`函数指定的参数。

**从 Python 3.5** 开始，暂停时间将至少为指定的秒数。

* * *

## 示例 2：Python 创建数字时钟

```py
import time

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

在上面的程序中，我们在[无限循环](/python-programming/while-loop)内计算并打印了当前本地时间。 然后，程序等待 1 秒钟。 同样，将计算并打印当前本地时间。 这个过程继续进行。

当您运行程序时，输出将类似于：

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

这是上述程序的稍作修改的更好的版本。

```py
 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 shell 中的[数字时钟](https://stackoverflow.com/questions/37515587/run-a-basic-digital-clock-in-the-python-shell)。

* * *

## Python 中的多线程

在讨论多线程程序中的`sleep()`之前，让我们讨论一下进程和线程。

计算机程序是指令的集合。 流程就是这些指令的执行。

线程是进程的子集。 一个进程可以具有一个或多个线程。

* * *

### 示例 3：Python 多线程

本文上面的所有程序都是单线程程序。 这是一个多线程 Python 程序的示例。

```py
 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() 
```

当您运行程序时，输出将类似于：

```py
 Hello
Hello
Hi
Hello
Hi
Hi 
```

上面的程序有两个线程`t1`和`t2`。 这些线程使用`t1.start()`和`t2.start()`语句运行。

请注意，`t1`和`t2`同时运行，您可能会获得不同的输出。

访问此页面以了解有关 [Python](https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python) 中的多线程的更多信息。

* * *

## 多线程程序中的`time.sleep()`

`sleep()`函数将当前线程的执行暂停给定的秒数。

对于单线程程序，`sleep()`暂停线程和进程的执行。 但是，该函数在多线程程序中挂起线程而不是整个进程。

* * *

### 示例 4：多线程程序中的`sleep()`

```py
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 秒。

**推荐阅读**： [Python `time.sleep()`](https://stackoverflow.com/questions/92928/time-sleep-sleeps-thread-or-process)使线程休眠