docs: def _multi(fun, lons, lats, chunk_size, cores=1):
      """Work on multiple cores.
      """
      pool = Pool(processes=cores)
  
      splits = get_scene_splits(lons.shape[0], chunk_size, cores)
  
      lons_parts = np.vsplit(lons, splits)
      lats_parts = np.vsplit(lats, splits)
  
      results = [pool.apply_async(fun,
                                  (lons_parts[i],
                                   lats_parts[i]))
                 for i in range(len(lons_parts))]
  
      pool.close()
      pool.join()
  
      lons, lats = zip(*(res.get() for res in results))
  
      return np.vstack(lons), np.vstack(lats)