Cross-platform time out decorator

Tim Golden mail at timgolden.me.uk
Thu Sep 27 12:06:04 EDT 2007


Steve Holden wrote:
> Joel wrote:
>> On Sep 27, 4:36 pm, Hrvoje Niksic <hnik... at xemacs.org> wrote:
>>> Joel <joel.schae... at gmail.com> writes:
>>>> I found the solution :
>>>> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/440569
>>>> describes a solution based on threads. I tested it and it works
>>>> perfectly.
>>> Note that, unlike the original alarm code, it doesn't really interrupt
>>> the timed-out method, it just returns the control back to the caller,
>>> using an exception to mark that a timeout occurred.  The "timed out"
>>> code is still merrily running in the background.  I don't know if it's
>>> a problem in your case, but it's an important drawback.
>> There should be a method to stop the thread though? I've never
>> programmed thread stuff in python and wasn't able to find how to do
>> it, would you happen to know how to "kill" the timed out thread?
>>
> There is no way to "kill" a thread, other than set a flag and have the 
> thread read it to realise the main thread wants it to stop.

This is more-or-less why I suggested earlier that you wouldn't
find anything straightforward. The signal mechanism, as far as
I know, is pretty much unique in terms of the support it gets
from the OS and the language combined. Any other solution will
end up papering over cracks.

TJG



More information about the Python-list mailing list