[Python-ideas] Thread stopping

Serhiy Storchaka storchaka at gmail.com
Fri Mar 30 12:09:12 CEST 2012


29.03.12 22:48, Andrew Svetlov написав(ла):
> I propose to add Thread.interrupt() function.
>
> th.interrupt() will set a flag in ThreadState structure.
>
> When interpreter switches to next thread it will check that flag.
> If flag is on then ThreadInterruptionError will be raised in thread context.
> If thread has blocked via threading locks (Lock, RLock, Condition,
> Semaphore etc) — exception is raised also.

At first glance this is a very attractive suggestion. But how about 
alternative GIL-less implementations? The interpreter can execute some 
threads at the same time.

Java has a similar mechanism Thread.interrupt(), but that works only if 
the thread has blocked via threading locks. There is a stronger 
Thread.stop(), but it is recognized as unsafe and is deprecated.

It would be wrong to say that this is the way to *force* stopping of 
some thread. ThreadInterruptionError can and should be caught in some cases.

> BTW, we can disable interruption mechanic by default and use it only
> if switched on by threading.enable_interruption()

And we need context manager for noninterrable critical sections (or for 
interrable non-critical sections?).


P. S. I've had a crazy idea. What if we allow to raise any exception, 
not only ThreadInterruptionError, in another thread?




More information about the Python-ideas mailing list