python 使用異常來中斷 暫停執行緒

2022-09-18 17:15:09 字數 1249 閱讀 8435

""""

python 使用異常來中斷/暫停執行緒

h_thread 執行緒控制代碼

stoptype 執行緒停止型別,返回1則正常中斷了執行緒

"""def doing():

ncout = 0

while 1:

ncout += 1

print(ncout)

time.sleep(0.1)

def kill_thread(h_thread, stoptype): #= systemexit

import inspect

import ctypes

try:

"""raises the exception, performs cleanup if needed"""

tid = ctypes.c_long(h_thread.ident)

if not inspect.isclass(stoptype):

stoptype = type(stoptype)

res = ctypes.pythonapi.pythreadstate_setasyncexc(tid, ctypes.py_object(stoptype))

if res == 0:

raise valueerror("invalid thread id")

elif res != 1:

# """if it returns a number greater than one, you're in trouble,

# and you should call it again with exc=null to revert the effect"""

ctypes.pythonapi.pythreadstate_setasyncexc(tid, none)

raise systemerror("kill_thread failed")

return res

except exception as e:

print(e)

# return -1

#測試例子

threads = threading.thread(target=doing)

threads.setdaemon(true) #設定守護執行緒目的盡量防止意外中斷掉主線程程式,

threads.start()

time.sleep(5)

ret = kill_thread(threads, doing)

print(ret)

使用C 異常來取代exit 函式

使用c 異常來取代exit 函式 從c語言開始接觸c 的人,恐怕都知道exit 這個函式,似乎現在很多的程式設計師都有這樣一種習慣,在程式一遇到錯誤 或任務剛完成時,把呼叫exit 函式當成是一種最好的結束程式的方法。在以前遺留的許多老式c c 中,這種現象非常普遍,但當手頭的軟體專案逐步進展並越來...

python的異常機制使用技巧

1 當你開發的介面被其他應用呼叫時,響應要及時,但是有些要觸發的操作很耗時間。比如下面需要通過被呼叫觸發的函式create job 1 但是這個函式執行會比較消耗時間 2 於是,我們可以利用異常機制,先返回給呼叫者資訊,然後,再慢慢執行這個函式 這個其實是不對的,create job 1 函式結束後...

Python 異常處理使用方法

常見的錯誤型別 常見錯誤 exception 常規錯誤的基類 attributeerror 物件沒有這個屬性 eoferror 沒有內建輸入,到達eof標記 importerror 匯入模組 物件失敗 indexerror 序列中沒有此索引 keyerror 對映中沒有這個鍵 memoryerror...