killing thread ?
"Martin v. Löwis"
martin at v.loewis.de
Fri Jan 24 16:41:53 CET 2003
Paul Rubin wrote:
> Is there some inherent reason for that? Or is it just a deficiency,
> either in Python or in the way OS threads work? I don't understand
> why Python's thread switching code can't just look for a flag
> indicating that the thread should be killed instead of allowed to run.
Python does not implement a thread switching code; these are operating
If you are thinking that the interpreter loop could look whether it
shall terminate: this works only if the thread is not in a blocking
There are thread cancellation functions in some of the underlying thread
APIs. The main reason why those are not used is that they don't
implement proper stack unwinding. In Python, you have to explicitly
complete all C stack frames, because they may need to DECREF objects (in
particular, argument tuples). So a plain thread termination, as Irmen
suggests it, leaves garbage behind.
If these issues (blocking system calls and proper unwinding) are
addressed, the feature could be provided. Most likely, it would be
exposed as an exception that appears out of nothing in the target
thread, so if the target thread choses to catch the exception, you still
couldn't terminate it.
More information about the Python-list