docs: def _mprotate(ang, lny, pool, order):
      """Uses multiprocessing to wrap around _rotate
  
      4x speedup on an intel i7-3820 CPU @ 3.60GHz with 8 cores.
  
      The function calls _rotate which accesses the `mprotate_dict`.
      Data is rotated in-place.
  
      Parameters
      ----------
      ang: float
          rotation angle in degrees
      lny: int
          total number of rotations to perform
      pool: instance of multiprocessing.pool.Pool
          the pool object used for the computation
      order: int
          interpolation order
      """
      targ_args = list()
  
      slsize = np.int(np.floor(lny / ncores))
  
      for t in range(ncores):
          ymin = t * slsize
          ymax = (t + 1) * slsize
          if t == ncores - 1:
              ymax = lny
          targ_args.append((ymin, ymax, ang, order))
  
      pool.map(_rotate, targ_args)