I'm using the example below to stop threads safely. But how do I stop all threads which are currently running, if I don't know exactly which threads are running?
class exampleThread(threading.Thread):
def __init__(self, name):
threading.Thread.__init__(self)
self.name = name
def run(self):
try:
print('this thread is running')
sleep(10)
finally:
print('example thread ended')
def get_id(self):
if hasattr(self, '_thread_id'):
return self._thread_id
for id, thread in threading._active.items():
if thread is self:
return id
def raise_exception(self):
thread_id = self.get_id()
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(thread_id,
ctypes.py_object(SystemExit))
if res > 1:
ctypes.pythonapi.PyThreadState_SetAsyncExc(thread_id, 0)
print('Exception raise failure')
example = exampleThread('example')
example.start()
Now my thread is running. But how do I kill multiple threads at the same time, without knowing if they are running and example
is declared?