我在线找到了一些代码,经过一段等待时间后,这些代码将通过异常停止线程。
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时,这无法调用异常。
不能以这种方式调用异常吗?
答案 0 :(得分:0)
与其在类外部调用raise_exception,不如从线程的run方法内部调用它将起作用。例如。
def run(self):
if count>3:
self.raise_exception()