Python time sleep()– time.sleep()方法的一站式解决方案

举报
Yuchuan 发表于 2021/03/09 17:01:59 2021/03/09
【摘要】 Python time sleep函数

有时,我们需要程序或程序的各个部分在短时间内执行。Python通过time.sleep()函数使此任务毫不费力。Ť他的文章中介绍这个功能的功能,连同其应用程序一起。 

在继续之前,让我们快速看一下本文涵盖的主题:

让我们开始吧。:)

为什么要使用Python time.sleep()?

睡眠功能在我们要停止程序流并让其他执行发生的情况下起着非常重要的作用。该函数在python的两个版本(即2和3)中都有定义。它属于Python的时间模块。基本上,这会增加执行延迟,并且只会暂停当前线程,而不会暂停整个程序。 

时间模块

Python的time模块中提供了Python time.sleep()函数。在使用此Python函数之前,您需要使用以下命令导入此模块:

import time

导入此模块后,即可使用time.sleep()函数。语法如下:

句法:  

睡眠(秒)

如您所见,它需要一个参数,即秒。在执行过程中,这基本上会引起这么多秒的延迟。该函数的返回值是void

现在让我们举一些例子来了解此功能的工作原理。

Python time.sleep()示例:

考虑下面的示例,该示例在输出之间引起一秒的延迟。

例子:

import time # import time module
sleep_time = 1  # time to add delay after first print statement
print('Hello')
time.sleep(sleep_time)  # sleep time
print('Edureka!')

输出:

如果执行了以上代码,则会在程序中增加延迟,因此,下一条语句将在1秒后执行。 对于确切的延迟,您还可以将浮点值传递给该函数。例如,如果经过了0.1秒,则将延迟100毫秒。

这是另一个示例,它将在执行程序之前和之后返回系统时间。

例子:

# sleep demonstration
import time
# Start time
print("The time of code execution begin is : ", end ="")
print(time.ctime())
# haulting program
time.sleep(6)
# end time
print("The time of code execution end is : ", end ="")
print(time.ctime())

输出:

开始执行代码的时间是:Sun Jun 23 22:36:19 2019开始执行代码
的时间是:Sun Jun 23 22:36:25 2019
进程返回0(0x0)执行时间:6.089 s
按任意键继续。。。

睡眠示例:

以下是睡眠功能的示例:

import time
startTime = time.time()
for i in range(5, 10):
  print(i)
  # making delay for 1 second
  time.sleep(1)
endTime = time.time()
elapsedTime = endTime - startTime
print("Elapsed Time = %s" % elapsedTime)

输出:

5
6
7
8
9

经过的时间= 5.006335258483887
进程返回0(0x0)执行时间:5.147 s

每次停止执行1秒钟,因此完整执行耗时5秒。另外,执行所需的额外时间是系统对程序进行后台操作的时间。

python sleep()的不同延迟时间

根据所需的输出,可以在Python中的程序执行之间添加不同的延迟时间。以下代码演示了如何做到这一点:

例子:

import time
for i in [1, 0.1, 2, 0.3]:
  print("I will sleep for %s" % i, end='')
  print(" seconds")
  time.sleep(i)

输出:

我要睡1秒
我要睡0.1秒
我要睡2秒
我要睡0.3秒

进程返回0(0x0)执行时间:3.538 s

惰性打印:

如果要以精美的方式打印某些内容,可以使用以下sleep()函数进行打印:

# importing time module
import time
message = "Some fancy character printing!"
for i in message:
   print(i)
   time.sleep(0.3)

如果执行上面的代码,您会发现每个字符的打印延迟,看起来很花哨。

Python线程睡眠

在多线程环境中,sleep()被证明是非常重要的,因为它在执行时会在正在执行的当前线程中增加延迟。

例子:

import time
from threading import Thread
class Runner(Thread):
   def run(self):
       for x in range(0, 7):
           print(x)
           time.sleep(2)
class Delay(Thread):
   def run(self):
       for x in range(106, 109):
           print(x)
           time.sleep(7)
print("Staring Runner Thread")
Runner().start()
print("Starting Delay Thread")
Delay().start()
print("Done")

以下是上面的线程示例的输出:

python线程睡眠-Python睡眠-Edureka

输出:

如果执行该程序,您会注意到整个程序并没有停止,而是只有当前正在执行的线程才继续运行,然后尝试一下。

应用 :

此方法有很多应用程序,例如,我们可以使用它来创建漂亮的用户界面,以某种精美的方式打印菜单或标题,但是,重要的应用程序之一是暂停要执行的后台进程在一定间隔内。

应用实例:

import time
string = "Edureka!"
print_string = ""
for i in range(0, len(string)):
   print_string = print_string + string[i]
   print(print_string)
   time.sleep(2)

输出:

E
Ed
Edu
Edur
Edure
Edurek
Edureka
Edureka!


正如我们已经看到的那样,sleep函数会使程序暂停一段时间,而Python的时间模块就派上用场了。让我们看一下如何从用户那里获取输入并动态使用相同的功能。

动态睡眠示例

这是一个睡眠示例,该示例利用来自用户的输入在两个打印功能之间添加延迟,并打印执行打印功能所花费的时间,以下示例基于Python3.x。

import time
def sleeper():
    while True:
        num = input('Enter wait time: ')
        try:
            num = float(num)
        except ValueError:
            print('Number only.n')
            continue
            # Run our time.sleep() command,
            # and show the before and after time
        print('Before: %s' % time.ctime())
        time.sleep(num)
        print('After: %sn' % time.ctime())
 
try:
    sleeper()
except KeyboardInterrupt:
    print('nnException Exiting.')
    exit()

输出:

输入等待时间:1
之前:Sun Jun 23 22:44:13 2019
之后:Sun Jun 23 22:44:14 2019
输入等待时间:3
之前:Sun Jun 23 22:44:16 2019
之后:Sun Jun 23 22: 2019年44月19日

准确性 

如果要在更短的时间内停止执行,则此函数受操作系统的限制,因为此函数使用操作系统sleep()函数,因此在Linux中,等待时间可以比Windows短。

概括

在上面的文章中,我们介绍了python中的sleep()方法,该方法主要用于增加程序执行的延迟,此程序包位于Python的时间模块中,该模块基本上使用底层操作系统的sleep()函数。我们还介绍了一些有关如何使用此功能的代码示例,并介绍了睡眠应用程序。演示了使用该功能的理想方式以及它在线程环境中的工作方式。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。