Stopping a thread from another one

Chris S. chrisks at NOSPAMudel.edu
Wed Jun 23 03:21:56 CEST 2004


Fabiano Sidler wrote:

> Hello Newsgroup!
> 
> In my Python script, I use the 'thread' module (not 'threading') and 
> 'signal' simultaneously. All spawned threads execute 
> 'pcapObject.loop(-1, callback)', which does not return.
> 
> The problem now is:
> When the script catch a signal (let's say: SIGHUP), only the main thread 
> is affected. But I need also the subthreads to be ended, because the 
> script reopen()s files on SIGHUP and would also re-create the threads.
> 
> NOT a solution is:
> The main thread sets a lock in the signal handler, the pcap-callback()
> function examines this lock everytime it's called, and if set, exit()s 
> the thread. This is not very beautiful.
> I would prefer, if I end the subthreads by the main thread.
> Is there any chance?
> 
> Greetings,
> fps

Incorporating a flag into each thread, which is checked periodically by 
the thread to decide whether or not it should end, is the safest way to 
terminate threads. However, if you're looking for a preemptive method 
that kills a thread unconditionally (whether the thread wants to die or 
not) then search this group for 'Kthread', a module created by Connelly 
Barnes, which implements a subclass of Thread incorporating this 
feature. Note that killing threads preemptively is unsafe and should 
only be done with care. This is why it's not part of Python's standard 
threading library.



More information about the Python-list mailing list