1. 首页
  2. 技术文章

52、Python sleep()

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

Python有一个名为时间的模块,该模块提供了一些有用的功能来处理与时间有关的任务。其中一种流行的功能是sleep()

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


示例1:Python sleep()


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创建数字时钟

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 shell中的数字时钟。


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

上面的程序有两个线程 11 和 22。这些线程使用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秒。

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

服务热线:130-0886-1890

QR code