最近需要實現一個服務程序的graceful exiting,保證在退出前關閉所有已創建的子線程
python借助
KeyboardInterrupted
異常響應鍵盤中斷,因此首先嘗試在子線程中try-catch這個異常(失敗)
查閱原因,鍵盤中斷只有主線程可以響應并處理,子線程無法收到這個異常。因此可以使用類似這樣的結構:
cond = True
def start_task():
while cond:
# do something
def terminate_task():
# break some conditions
cond = False
def main():
_t = Thread(target=start_task)
_t.start()
try:
while True:
pass
finally:
terminate_task()
_t.join()
if __name__ == '__main__':
main()
除此之外,查閱資料發現python的
signal
包可以實現類似java的鉤子,處理程序終止信號。用法可以參考https://blog.csdn.net/weixin_42350212/article/details/80588973
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
