Python Threads - stopped vs. gone vs. Alive

Francesco Bochicchio bockman at virgilio.it
Wed May 28 14:10:34 EDT 2008


On Wed, 28 May 2008 11:38:53 -0700, RossGK wrote:

> 
> I've answered my own question about the "None" state - an event was
> setting the thread to None where I didn't expect it.
> 
> However, my question slightly repositioned is if a Thread is "Stopped"
> it still seems to exist. Is there someway to make it go away, send it
> to garbage collection etc?
> 
You have to call the join() method of the thread object from another
thread. This will terminate the thread and free its resources. This is
usually the task of the parent thread which usually does something
like:
     t = MyTread(...)
     t.start()
     # do your own stuff, then before quitting
     t.join() # Note that this waits until t is terminated



> Other part of the original Q - I assume a Stopped thread gets a false
> from "isAlive" and a Running thread gets a true?

Yes. You can try yourself:

>>> import threading
>>> class MyThread(threading.Thread):
	def __init__(self): threading.Thread.__init__(self)
	def stop(self): self._stop = True
	def run(self):
		self._stop= False
		while self._stop == False:
			import time
			time.sleep(0.1)

			
>>> t = MyThread()
>>> t.start()
>>> t.isAlive()
True
>>> t.isAlive()
False
>>> t.join()
>>> t.isAlive()
False


Ciao
----
FB



More information about the Python-list mailing list