Python 中的 sleep 时间是什么?

2024 年 8 月 29 日 | 阅读 6 分钟

你是否曾经被迫延迟 Python 程序的执行?你通常希望你的代码尽快运行。但是,在某些情况下,将程序暂停一段时间对你来说是最有利的。

例如,为了模拟程序中的暂停,我们可以使用 Python 的 sleep() 方法。在数据上传或下载时,图形加载或显示到屏幕时,我们可能需要等待。即使在请求 Web API 或数据库操作之间,我们也可能需要暂停。在这些以及更多情况下,都可以在我们的代码中插入 Python sleep() 方法。

Python time.sleep()

Python time sleep 方法用于暂停程序的执行。我们可以在 Python 程序中使用 time 模块的 sleep 方法来停止程序执行一段时间(以秒为单位)。请记住,Python time sleep 方法只会暂停当前线程的执行,而不是整个程序。

Python time.sleep() 函数语法

sleep() 函数是 time 模块的方法。因此,在使用此函数之前,我们必须先将 time 模块导入我们的程序。下面是使用 sleep 函数的语法。

sleep() 方法的输入 t 是程序要延迟的时间,以秒为单位。这意味着在执行上一个代码行 t 秒后,下一行代码才会执行。请参阅下面的示例。

代码

输出

Sun Aug 28 17:07:33 2022
Before delay of the  program
After delay of the program
Sun Aug 28 17:08:23 2022

当调用上述代码时,第二个 print 语句将在 50 秒后执行。因此,我们可以根据需要为代码添加延迟。为了获得更精确的延迟执行,我们也可以将参数 t 指定为浮点数。例如,如果我们想添加 10 毫秒(即 0.01 秒)的延迟,可以这样做:

代码

输出

1661706874.95425
Before delay of the program
After delay of the program
1661706875.0580375

Python time.sleep 示例

让我们看下一个 Python time.sleep() 函数示例。

代码

输出

Sun Aug 28 17:19:50 2022
0
1
2
3
4
5
6
7
8
9
Sun Aug 28 17:20:40 2022

由于 for 循环的 5 秒超时,总耗时大于 5 秒。额外的时间是由于程序的处理时间、操作系统线程调度等造成的。

在 Python 列表中创建时间延迟

代码

输出

Thu Sep  1 12:28:05 2022
['Time', 'Sleep', 'Python']
Thu Sep  1 12:28:15 2022

在 Python 元组中创建时间延迟

代码

输出

Thu Sep  1 12:32:31 2022
('Time', 'Sleep', 'Python')
Thu Sep  1 12:32:46 2022

在列表推导式中创建时间延迟

代码

输出

Thu Sep  1 12:38:03 2022
Delay
Time
Sleep
Python
Time
Module
Thu Sep  1 12:39:03 2022

在程序中创建多个时间延迟

代码

输出

Thu Sep 1 12:44:39 2022
['Python', 'C', 'C++', 'R', 'Java', 'JavaScript', 'HTML']
Python
C
C++
R
Java
JavaScript
HTML
Thu Sep 1 12:45:16 2022

Python 线程睡眠

Python 中的 sleep() 方法是多线程中的一项关键技术。简单的示例表明,在多线程编码中,Python time sleep 方法仅仅会暂停当前运行线程的操作。

代码

使用装饰器包含 Python time.sleep() 请求

我们有时需要重试失败的操作。这是一个常见的场景,例如,当服务器过载时,我们可能需要重新下载文件。由于我们通常不想频繁地向服务器发送请求,因此最好在每次请求之间包含一个 Python sleep() 函数。

我还曾需要监控 UI 状态,同时运行自动化测试,这是另一个场景。根据我们用来测试的机器,用户界面加载的速度可能比预期的快或慢,这可能会改变我的程序在检查某项内容时屏幕上显示的信息。

在这种情况下,我们可以指示应用程序暂停片刻,并在稍后(一两秒后)再次检查所有内容。这可以决定一个测试是通过还是失败。

在以上任一情况下,我们都可以使用装饰器添加一个 Python sleep() 方法。让我们来看一个例子。

代码

以上代码中的装饰器是:sleep()。它接收一个时间窗口和一个重试次数,默认值为三次。真实的 decorator() 是一个包含被装饰方法的函数,它包含在 sleep() 方法中。

最后,内部方法 wrapper() 接收传递给被装饰方法的关键字参数和参数。魔力就发生在这里!我们尝试使用 while 循环再次调用该过程。如果引发了异常,我们应该将其声明。在调用 sleep() 并增加重试次数后,再次尝试执行函数。


下一主题Python Word2Vec