docs: def run_functor(functor, *args, **kwargs):
      """
      Given a functor, run it and return its result. We can use this with
      multiprocessing.map and map it over a list of job functors to do them.
  
      Handles getting more than multiprocessing's pitiful exception output
  
      This function was derived from:
      http://stackoverflow.com/a/16618842/19741
  
      This code was adopted from the American Gut project:
      https://github.com/biocore/American-Gut/blob/master/americangut/parallel.py
      """
      try:
          # This is where you do your actual work
          return functor(*args, **kwargs)
      except Exception:
          # Put all exception text into an exception and raise that
          raise Exception("".join(traceback.format_exception(*sys.exc_info())))