簡體   English   中英

如何使用拋出異常方法終止線程-Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM