How to Restart a thread

Rob Williscroft rtw at freenet.co.uk
Sat Nov 25 12:31:09 EST 2006


many_years_after wrote in news:1164467660.760671.145440
@j44g2000cwa.googlegroups.com in comp.lang.python:

> class mythread(threading.Thread):
>     def __init__(self, threadname):
>         threading.Thread.__init__(self, name = threadname)
> 
>     def run(self):
>         print 'i am running'
>         print 'i quit run()'
> 
> thread  = mythread('1')
> thread.start()
> print threading.activeCount()  ## 1 , this means the thread is active
> if not thread.isAlive():
>     print 'i am dead,you can restart'   ### OK, this is executed. this
> means the thread is no alive
>     thread.start() #### " thread already started "
> 
> This program presentes that the thread quit the *run()* func and is
> active but not alive.   How to understand this? It is said if the
> thread quit the *run()* func , it's dead.
> how to restart it ?
> 
> Thanks
> 

Form the manual [1] (you must have missed this):

    	start( ) 

    	Start the thread's activity. 
    	This must be called at most once per thread object. 
    	It arranges for the object's run() method to be invoked 
    	in a separate thread of control. 

Note the 2nd line:

    	This must be called at most once per thread object. 

so you simply can't restart a Thread object.

[1] http://docs.python.org/lib/thread-objects.html

Rob.
-- 
http://www.victim-prime.dsl.pipex.com/



More information about the Python-list mailing list