有关Python中线程的超时控制以及一个简单的应用(2)

我们只是知道在那里等待了特定的时间再执行下面的代码,那么我们怎么判断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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/567c2d55f06ac329dd7d8c54dd7a4371.html