詳解python ThreadPoolExecutor異常捕獲
python ThreadPoolExecutor線程池的工作線程中出現(xiàn)異常時,主線程不會捕獲異常。
解決方法1:
直接在需要執(zhí)行的任務(wù)方法中添加try:
executor = ThreadPoolExecutor() executor.submit(test_work, 0) def test_work(p): ?? ?try: ?? ??? ?1/p ?? ?except Exception as e: ? ? ? ? logger.exception(e)
解決方法2:
添加完成運行時的callback:
executor = ThreadPoolExecutor() task = executor.submit(test_work, 0) task.add_done_callback(handle_exception)
handle_exception中又可以通過兩種方式捕獲異常:
2.1 通過concurrent.futures.Future.exception(timeout=None)
def handle_exception(worker): # Method 1: concurrent.futures.Future.exception(timeout=None) worker_exception = worker.exception() if worker_exception: logger.exception(worker_exception)
2.2 通過concurrent.futures.Future.result(Timeout = None)
def handle_exception(worker): Method 2: try try: worker.result() except Exception as e: logger.exception(e)
到此這篇關(guān)于詳解python ThreadPoolExecutor異常捕獲的文章就介紹到這了,更多相關(guān)python ThreadPoolExecutor異常捕獲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python自動化測試三部曲之unittest框架的實現(xiàn)
這篇文章主要介紹了python自動化測試三部曲之unittest框架的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10Python使用設(shè)計模式中的責任鏈模式與迭代器模式的示例
這篇文章主要介紹了Python使用設(shè)計模式中的責任鏈模式與迭代器模式的示例,責任鏈模式與迭代器模式都可以被看作為行為型的設(shè)計模式,需要的朋友可以參考下2016-03-03turtle的基礎(chǔ)使用之python?turtle遞歸繪圖
這篇文章主要介紹了turtle的基礎(chǔ)使用之python?turtle遞歸繪圖,turtle是一種比較簡單的第三方庫,下面借助遞歸繪圖詳細描述該內(nèi)容,具有一的的知識性參考價值,需要的朋友可以參考一下2022-02-02Python編程之gui程序?qū)崿F(xiàn)簡單文件瀏覽器代碼
這篇文章主要介紹了Python編程之gui程序?qū)崿F(xiàn)簡單文件瀏覽器代碼,具有一定借鑒價值,需要的朋友可以了解下。2017-12-12Python+OpenCV 圖像邊緣檢測四種實現(xiàn)方法
本文主要介紹了通過OpenCV中Sobel算子、Schaar算子、Laplacian算子以及Canny分別實現(xiàn)圖像邊緣檢測并總結(jié)了四者的優(yōu)缺點,感興趣的同學可以參考一下2021-11-11