[英]How Can I Terminate a Thread Using a Throw Exception Method - Python
我在線找到了一些代碼,這些代碼將在等待一段時間后通過異常停止線程。
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時,這無法調用異常。
不能以這種方式調用異常嗎?
與其在類外部調用raise_exception,不如從線程的run方法內部調用它。 例如
def run(self):
if count>3:
self.raise_exception()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.