MapThread and parallel computing
May be because its easy to implement?
MapThread[f, {{a1, a2, a3}, {b1, b2, b3}}]
(* {f(a1,b1),f(a2,b2),f(a3,b3)} *)
ParallelMap[f @@ # &, {{a1, a2, a3}, {b1, b2, b3}} // Transpose]
(* {f(a1,b1),f(a2,b2),f(a3,b3)} *)
Many functional operations including MapThread
can be easily parallelized by composing the function with ParallelSubmit
, then collecting all concurrent jobs:
WaitAll[MapThread[ParallelSubmit @* f, {{a1, a2, a3}, {b1, b2, b3}}]]