""""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...