您現在的位置是:網站首頁>JAVA詳解python ThreadPoolExecutor異常捕獲

詳解python ThreadPoolExecutor異常捕獲

宸宸2024-03-02JAVA64人已圍觀

本站收集了一篇相關的編程文章,網友萬沐葵根據主題投稿了本篇教程內容,涉及到python ThreadPoolExecutor異常捕獲、python ThreadPoolExecutor、python ThreadPoolExecutor異常捕獲相關內容,已被692網友關注,涉獵到的知識點內容可以在下方電子書獲得。

python ThreadPoolExecutor異常捕獲

python ThreadPoolExecutor線程池的工作線程中出現異常時,主線程不會捕獲異常。

解決方法1:

直接在需要執行的任務方法中添加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)

到此這篇關於詳解python ThreadPoolExecutor異常捕獲的文章就介紹到這了,更多相關python ThreadPoolExecutor異常捕獲內容請搜索碼辳之家以前的文章或繼續瀏覽下麪的相關文章希望大家以後多多支持碼辳之家!

我的名片

網名:星辰

職業:程式師

現居:河北省-衡水市

Email:[email protected]