On 9/27/07, Hrvoje Niksic <[EMAIL PROTECTED]> wrote: > Joel <[EMAIL PROTECTED]> writes: > > >> 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? > > Not in Python. Thread killing primitives differ between systems and > are unsafe in general, so they're not exposed to the interpreter. On > Windows you can attempt to use ctypes to get to TerminateThread, but > you'll need to hack at an uncomfortably low level and be prepared to > deal with the consequences, such as memory leaks. If the timeouts > happen rarely and the code isn't under your control (so you have no > recourse but to terminate the thread), it might be worth it though. > --
You can use ctypes and the Python API to raise a Python exception in the thread. I don't normally mention this, because it has some limitations, but it results in essentially the same effect as the signal based method. They both have the limitation that C code can't be interrupted. -- http://mail.python.org/mailman/listinfo/python-list