python线程API:join()

import threading

def spin(*args):    
    pass

#创建线程
spinner = threading.Thread(target=spin, args=('thinking!', signal)) 
#启动线程
spinner.start()
#等待线程结束
spinner.join(timeout=None)

作用:等待线程运行结束,阻塞当前的线程,直至被调用的线程结束运行。

具体来说,假定当前线程为main,main需要调用另外一个线程thread,那么应该使用main.join(thread),此时join()方法会阻塞main线程,直至线程thread运行结束。这么做可以保证main线程之间的顺序控制关系。

这个函数能够阻塞线程的调用方直到线程的join方法得到终止的信号。在以下三种情况下会收到终止信号

  • 线程正常结束
  • 线程运行过程中遇到无法处理的异常
  • 线程分配的时间用完
    若想要指定线程运行的时间,可以显示的给出timeout参数,timeout参数的单位为秒。join()函数的返回值总是为None,因此如果需要确定timeout时间点之后线程是否依然在运行,可以调用my_thread.isAlive(),返回值False表示运行结束

若没有显示给定timeout参数,将默认等待直至线程运行结束(正常结束或者遇到无法处理的异常而退出运行)

假定当前线程为thread1,调用thread1.join(thread1),即线程对自身调用join方法,join()方法会抛出RuntimeError。另外一个错误的用法是:当前线程thread1对还没启动的线程thread2调用join()方法,这种情况下也会报运行时错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值