位于 time 模块中的 sleep(secs) 函数,可以实现令当前执行的线程暂停 secs 秒后再继续执行。所谓暂停,即令当前线程进入阻塞状态,当达到 sleep() 函数规定的时间后,再由阻塞状态转为就绪状态,等待 CPU 调度。
   
   sleep() 函数位于 time 模块中,因此在使用前,需先引入 time 模块。
   
   
   sleep() 函数的语法规则如下所示:
time.sleep(secs)
   
   
   其中,secs 参数用于指定暂停的秒数,
   
   仍以前面章节创建的 thread 线程为例,下面程序演示了 sleep() 函数的用法:
   
   import threading
import time
#定义线程要调用的方法,*add可接收多个以非关键字方式传入的参数
def action(*add):
    for arc in add:
        #暂停 0.1 秒后,再执行
        time.sleep(0.1)
        #调用 getName() 方法获取当前执行该程序的线程名
        print(threading.current_thread().getName() +" "+ arc)
#定义为线程方法传入的参数
my_tuple = ("http://c.biancheng.net/python/",\
            "http://c.biancheng.net/shell/",\
            "http://c.biancheng.net/java/")
#创建线程
thread = threading.Thread(target = action,args =my_tuple)
#启动线程
thread.start()
#主线程执行如下语句
for i in range(5):
    print(threading.current_thread().getName())
程序执行结果为:
MainThread
   
   MainThread
   
   MainThread
   
   MainThread
   
   MainThread
   
   Thread-1 http://c.biancheng.net/python/
   
   Thread-1 http://c.biancheng.net/shell/
   
   Thread-1 http://c.biancheng.net/java/
   
   
   可以看到,和未使用 sleep() 函数的输出结果相比,显然主线程 MainThread 在前期获得 CPU 资源的次数更多,因为 Thread-1 线程中调用了 sleep() 函数,在一定程序上会阻碍该线程获得 CPU 调度。
   
   
    关注公众号「
    
     站长严长生
    
    」,在手机上阅读所有教程,随时随地都能学习。内含一款搜索神器,免费下载全网书籍和视频。
   
   
    微信扫码关注公众号
   
   
    
     一套完整的嵌入式开发学习路线(高薪就业版)
    
   
   
    
     一套课程卖1万,TMD太贵了!
    
   
   
    
     跑了3000公里,见了一位大佬
    
   
   
    
     Go语言fmt.Sprintf(格式化输出)
    
   
   
    
     C语言分块查找算法,索引顺序查找算法
    
   
   
    
     C++ STL无序容器底层实现原理(深度剖析)
    
   
   
    
     MySQL REVOKE:删除用户权限
    
   
   
    
     C++ cin是如何判断输入结束(读取结束)的?
    
   
   
    
     JSP include指令
    
   
   
    
     Pandas groupby分组操作详解