我们只是知道在那里等待了特定的时间再执行下面的代码,那么我们怎么判断t2是否是执行结束了还是线程超时了呢? 这就需要知道线程的"活动(alive)"的概念。大体上,一个线程自从start()方法被调用开始直到run()函数返回的这段期间都被认为是活动的, 而且python提供了一个方法 isAlive()来判断线程是否是活动的。对,就是这样,如果超时了的话,isAlive()方法肯定返回的True(因为join()方法不会结束线程,所以线程仍然是活动的), 而如果是执行结束了,run()函数肯定已经返回了,那么isAlive()方法肯定返回False。代码示例如下:
#----------------------------------------------------------------------
def test():
"""A task control function."""
... # previous job
t1 = Thread1()
t2 = Thread2()
t1.start()
t2.start()
t2.join(10) # wait here until t2 is over or timeout occured(10 seconds)
if t2.isAlive(): # if t2 is still alive, then it is time out!
print 't2 is time out!'
... # the next job