How can I kill a running thread when exiting from __main__

Steve Holden steve at holdenweb.com
Tue Apr 3 13:32:47 EDT 2007


care02 at gmail.com wrote:
> Hi!
> 
> I have the following problem: I have written a short Python server
> that creates an indefinite simulation thread that I want to kill when
> quitting (Ctrl-C) from Python. Googling around has not given me any
> hints on how to cleanly kill running threads before exiting. Any help
> is appreciated!
> 
> Carl
> 
> ### CODE EXTRACT ###
> 
> import pythoncom
> 
> class QueueThread( threading.Thread):
>     def __init__(self, command):
>         threading.Thread.__init__(self)
>         self.command = command
> 
>     def run(self):
>         pythoncom.CoInitialize()
>         try:
>             object = Dispatch('application')
>             execute = getattr(object, 'Execute')
>             execute(self.command )
>         finally:
>             object = None
>             pythoncom.CoUnitialize()
> 
> queuethread = QueueThread("queuehandler")
> queuethread.setDaemon(True)
> queuethread.start()
> 
> ## How can I kill "queuethread" when exiting (Ctrl-C)?
> 
The only way to do this is to have the thread regularly examine a 
"please quit" flag that is set from the main thread when termination is 
required.

There have been many suggestions to allow external forced termination of 
threads, but this is impossible to specify in a clean way that is both 
platform-independent and reliable, so it's not likely to happen.

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC/Ltd          http://www.holdenweb.com
Skype: holdenweb     http://del.icio.us/steve.holden
Recent Ramblings       http://holdenweb.blogspot.com




More information about the Python-list mailing list