Stopping a thread from another one

Antoon Pardon apardon at forel.vub.ac.be
Wed Jun 23 04:48:49 EDT 2004


Op 2004-06-23, Chris S. schreef <chrisks at NOSPAMudel.edu>:
> 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.

I thought Python was a language for consenting adults.

-- 
Antoon Pardon



More information about the Python-list mailing list