Hi All, Currently it is not possible to "kill" thread which is blocked. The rationale for this is handling situations when thread is blocked - e.g. when thread is quering DB when lock occurred on Database. In this case, the main thread has no way how to stop the blocked thread. Killing a thread is also popular question - see [1][2].
pthread library and Windows API contains mechanisms for forced termination of threads - see [3] and [4]. It is also simple to use them using ctypes library but after this action one need to "clean" internal data structures which is bad practice: import time import threading import ctypes def handler(): # blocked thread handler time.sleep(1000) t = threading.Thread(name='bar', target=handler) libpt = ctypes.cdll.LoadLibrary("libpthread.so.0") t.start() libpt.pthread_cancel(ctypes.c_ulong(t.ident)) # This is nasty cleaning of internal python structures del threading._active[t.ident] Is if feasible to add canceling threads to python threading library? I am willing to help creating a patch (at least for linux). [1] https://stackoverflow.com/questions/323972/is-there-any-way-to-kill-a-thread [2] https://www.geeksforgeeks.org/python-different-ways-to-kill-a-thread/ [3] http://man7.org/linux/man-pages/man3/pthread_cancel.3.html [4] https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-terminatethread _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/ZDERRWIBX7JP5F2VRTTGD4OMCUSMH3QB/ Code of Conduct: http://python.org/psf/codeofconduct/