나는 ThreadPoolExecutor
을 사용 중이며 작업자 스레드가 실패 할 경우를 대비하여 전체 계산을 중단해야합니다.작업자 스레드에서 던져진 예외를 즉시 다시 발생시키는 방법은 무엇입니까?
ThreadPoolExecutor
자동으로 예외를 다시 발생시키지 않습니다 때문에 관계없이 오류 성공을 인쇄 1. 예. .result()
예외를 재 - 제기 때문에
from concurrent.futures import ThreadPoolExecutor
def task():
raise ValueError
with ThreadPoolExecutor() as executor:
executor.submit(task)
print('Success')
예 2이 제대로 메인 스레드를 충돌합니다. 그러나 첫 번째 작업이 완료 될 때까지 기다리므로 주 스레드는 지연과 함께 예외를 경험합니다.
가 어떻게 실패를 처리하고 나머지 근로자를 중단 발생 직후 (다소) 메인 스레드에서 작업자 예외를 알 수
import time
from concurrent.futures import ThreadPoolExecutor
def task(should_raise):
time.sleep(1)
if should_raise:
raise ValueError
with ThreadPoolExecutor() as executor:
executor.submit(task, False).result()
executor.submit(task, True).result()
print('Success')
?