2017-03-07 4 views

답변

3

pmap docstrings에서 이미 retry_ 키워드 인수를 사용하여 이것을 구현 한 것을 볼 수 있습니다.

pmap([::AbstractWorkerPool], f, c...; distributed=true, batch_size=1, 
on_error=nothing, retry_n=0, retry_max_delay=DEFAULT_RETRY_MAX_DELAY, 
retry_on=DEFAULT_RETRY_ON) -> collection 

는 ... 오류가 콜렉션의 나머지 부분을 처리 PMAP에서 멈춘다. 이 동작을 무시하려면 인수를 통해 on_error 인수를 지정하여 단일 인수 (즉, 예외)를 취할 수 있습니다. 이 함수는 오류를 재발행하여 처리를 중지하거나 계속하려면 이 결과와 함께 호출자에게 반환 된 모든 값을 반환합니다.

실패 계산도 인수 retry_on으로 재 시도를 통과 이고, n은 각각 을 max_delay retry_on, retry_n, retry_max_delay 통해 시도 할 수있다. 일괄 처리가 지정되고 전체 일괄 처리가 실패하면 일괄 처리의 모든 항목이 다시 시도됩니다.

@parallel 매크로에는 이와 같은 것이 없다고 생각합니다. 그러나 Base.wrap_on_error & Base.wrap_retry 함수를 사용하여 원래 함수를 확장하여 오류를 처리 할 수 ​​있습니다. pmap의 정의를보고 https://github.com/JuliaLang/julia/blob/v0.5.0/base/pmap.jl에서 많은 구현 세부 사항을 볼 수 있습니다.

기본 전략은 오류 (잠재적으로 데이터)를 잡아내어 같은 작업자 또는 다른 작업자를 사용하여 다시 시도하는 것입니다. 나는 생각한다.

+0

유용한 포인터를 보내 주셔서 감사합니다! – crackjack