#---------------------------------------------------------------------- def run(self): """The working method, put all the work of the class in it.""" print "I am a threading class, my name is: %s " % self.getName() print "I am stopping ..."
mythread = MyThread() mythread.start()二、Python中提供的线程超时检测机制线程的超时与否可以用Python自己提供的机制来检测, 这就是线程的 join() 函数,在python的文档里面可以找到该函数的详细说明(http://docs.python.org/library/threading.html#threading.Thread.join )。 简单地说,如果同时执行了2个线程t1 和 t2,如果想让一个线程等待另一个线程执行结束再执行的话,那么必须执行被等待线程的join()方法,代码示例如下:#---------------------------------------------------------------------- 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) ... # the next job通过上面的链接查到join()方法的文档可以知道, 该方法有一个可选的参数 timeout, 如果像上面的例子中设置了该参数的话, 执行了该函数会在此等待t2线程10秒钟,在此期间调用程序(caller)什么也不做,就等着,直到t2结束了或者超时了,才会执行下面的代码。如果不设置timeout参数, caller会在此等待直到t2运行结束。这里需要注意的是, join()函数在这里只相当于一个“采样”,它不会在超时的时候终止t2的执行,实际上t2在超时的情况下还是会执行直到其结束或者另一种情况,caller结束了,但是前提是t2必须被设置为“守护线程(daemon)”(详情见下面的应用实例)。--------------------------------------分割线 --------------------------------------CentOS 6.4安装 Python2.7.10 http://www.linuxidc.com/Linux/2015-08/120895.htm无需操作系统直接运行 Python 代码 http://www.linuxidc.com/Linux/2015-05/117357.htmCentOS上源码安装Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htmPython脚本获取Linux系统信息 http://www.linuxidc.com/Linux/2013-08/88531.htm在Ubuntu下用Python搭建桌面算法交易研究环境 http://www.linuxidc.com/Linux/2013-11/92534.htmPython 语言的发展简史 http://www.linuxidc.com/Linux/2014-09/107206.htm--------------------------------------分割线 --------------------------------------我们只是知道在那里等待了特定的时间再执行下面的代码,那么我们怎么判断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更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2015-08/121010p2.htm