diff --git a/src/workerpool.jl b/src/workerpool.jl index 1d93365..c27c7f9 100644 --- a/src/workerpool.jl +++ b/src/workerpool.jl @@ -370,6 +370,28 @@ function CachingPool(workers::Vector{Int}) return pool end +""" + CachingPool(func, workers::Vector{Int}) + +Excute `func(pool)`, clearing out any cached functions from the workers when complete. + +# Examples +```julia +CachingPool(workers()) do wp + foo = rand(10^8); + pmap(wp, i -> sum(foo) + i, 1:100); +end +""" +function CachingPool(func, workers::Vector{Int}) + pool = CachingPool(workers) + try + func(pool) + finally + clear!(pool) + end +end + + """ clear!(pool::CachingPool) -> pool