如何使用抛出异常方法终止线程-Python

时间:2019-04-11 18:33:50

标签: python multithreading exception

我在线找到了一些代码,经过一段等待时间后,这些代码将通过异常停止线程。

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')

一段时间后,将通过以下方式调用异常:

t1 = thread_with_exception('Thread 1') 
t1.start() 
time.sleep(1/1000) 
t1.raise_exception() 
t1.join()

我想调用一个异常,该异常将指定进程发生多少次。如:

t1 = thread_with_exception('Thread 1') 
t1.start() 
if t1.count >= 3: 
    t1.raise_exception() 
    t1.join() 

但是,当t1.count> = 3时,这无法调用异常。

不能以这种方式调用异常吗?

1 个答案:

答案 0 :(得分:0)

与其在类外部调用raise_exception,不如从线程的run方法内部调用它将起作用。例如。

def run(self):
    if count>3:
         self.raise_exception()